[LARAVEL] Classi View e Redirect

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Lucciano
Prode Principiante
Messaggi: 167
Iscrizione: lunedì 11 febbraio 2013, 15:14

[LARAVEL] Classi View e Redirect

Messaggio da Lucciano »

Salve forum, non mi è molto chiara una definizione.

"Le classi View e Redirect derivano dall'oggetto Response. L'oggetto Response è l'istanza di una classe che può essere passata a Laravel come risultato di una clousure oppure di una action. Gli oggetti response normalmente contengono un corpo, un codice di status e gli header HTTP."

L'oggetto Response e l'istanza della classe Response. Mentre View e Redirect derivando dall'oggetto Response ereditano la classe Response giusto?
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: [LARAVEL] Classi View e Redirect

Messaggio da Zoff »

Non faresti prima ad andare a vedere il codice? Di che classi View e Redirect stai parlando?
Se non metti i namespace o un minimo di contesto come si fa ad aiutarti?

Le uniche classi View e Redirect che si trovano nello stesso namespace sono quelle del namespace Illuminate\Support\Facades ed estendono direttamente la classe astratta Facade
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
Lucciano
Prode Principiante
Messaggi: 167
Iscrizione: lunedì 11 febbraio 2013, 15:14

Re: [LARAVEL] Classi View e Redirect

Messaggio da Lucciano »

Zoff, lo so che a volte scoccio, ma voglio solo cercare di applicare la teoria ad oggetti al framework, per vedere se ho ben capito tutto.
Lucciano
Prode Principiante
Messaggi: 167
Iscrizione: lunedì 11 febbraio 2013, 15:14

Re: [LARAVEL] Classi View e Redirect

Messaggio da Lucciano »

Ho dato uno sguardo. Il codice è questo:

Codice: Seleziona tutto

<?php

// app/routes.php

Route::get ('/', function(){
return View::make('simple');
});
Quindi dice: "Il metodo View::make() crea una nuova istanza di un oggetto response di classe View. Il parametro che viene passato è il nome della view stessa, senza estensione.
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: [LARAVEL] Classi View e Redirect

Messaggio da Zoff »

Questi sono i motivi per cui preferisco Symfony a Laravel, nasconde troppa parte del codice e non ti fa capire una mazza.
Sarebbe accettabile se poi nella documentazione colmassero la lacuna ma non mi sembra sia così.

Polemiche a parte quel View non è la classe View ma è la Factory delle View (Illuminate\View\Factory.php) che restituisce un oggetto View (Illuminate\View\View.php).
Il controller poi quando riceve un oggetto View, che implementa l'interfaccia Rendable allora richiama il metodo render() per ottenere il risultato.
Come viene ottenuto il "risultato"? Interpretando la vie e un oggetto Response che viene poi tradotto in html.

Dove sta scritto tutto questo per Laravel? Non ne ho idea.
Come l'ho capito io? Il funzionamento è "simile" in Symfony e ho fatto "guessing".
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
Lucciano
Prode Principiante
Messaggi: 167
Iscrizione: lunedì 11 febbraio 2013, 15:14

Re: [LARAVEL] Classi View e Redirect

Messaggio da Lucciano »

Grazie zoff. In realtà i controller sono ad uno step successivo. Qui si parla ancora di sole route.

Comunque grazie alla tua spigazione ho capito che

Codice: Seleziona tutto

return View::make('simple');
non chiama semplicemente la view simple, ma crea un'istanza di un oggetto response di classe View e gli passa come parametro la view simple che viene "inserita" nell'oggetto.
Avatar utente
SuperStep
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 2037
Iscrizione: lunedì 19 dicembre 2011, 16:26
Desktop: Unity
Distribuzione: Ubuntu 16.04 LTS x86_64
Sesso: Maschile
Località: Somma Vesuviana (NA)

Re: [LARAVEL] Classi View e Redirect

Messaggio da SuperStep »

allora, praticamente intende questo:

esiste una classe Response che astrae il concetto di risposta Http; Questa risposta puo' essere una View (Un'interfaccia HTML) oppure una Redirect (ovvero nella risposta Http e' presente un header che specifica a quale nuova pagina deve andare) oppure altre.

Ambedue le classi sono delle risposte Http, solo che si diversificano per la risposta generata.

Dal momento che Laravel utilizza il design Pattern Facade, alcuni oggetti come Response, View, Redirect, ... dovrebbero essere delle istanza statiche create dal ServiceProvider di laravel.

Diciamo che questo non ci interessa e che facciamo finta che siano dei semplici puntatori ad un'istanza di una classe (grossomodo e' cosi').

se noi andiamo a vedere i facades di view e redirect

Codice: Seleziona tutto

<?php namespace Illuminate\Support\Facades;

/**
 * @see \Illuminate\View\Factory
 */
class View extends Facade {

	/**
	 * Get the registered name of the component.
	 *
	 * @return string
	 */
	protected static function getFacadeAccessor() { return 'view'; }

}
---
<?php namespace Illuminate\Support\Facades;

/**
 * @see \Illuminate\Routing\Redirector
 */
class Redirect extends Facade {

	/**
	 * Get the registered name of the component.
	 *
	 * @return string
	 */
	protected static function getFacadeAccessor() { return 'redirect'; }

}
---
poi ad esempio la classe view

Codice: Seleziona tutto


class View implements ArrayAccess, Renderable {
...
notiamo che non estende l'oggetto risposta, semplicemente utilizza l'interfaccia Render per "interpretarne" il tipo.

il motivo credo risieda nel fatto che noi possiamo restituire ogni sorta di cosa con laravel, tipo:

Codice: Seleziona tutto

Route::get('/', function(){ return "qualcosa"; });
credo Route passi la clousure ad una funzione che la wrappa, e se questa e' un'istanza di renderable allora passa a fare quello di cui ha bisogno una View o una Redirect oppure una Response generica o qualsiasi altra cosa...

se invece restituisci un oggetto json magari lo costruisce, non so', devo guardare.
ubuntu 16.04 LTS 64-bit - Memoria: 31,3 Gib - Processore: Intel Core i7-5960X CPU @ 3.00 GHz × 16 - Grafica: AMD Radeon HD 7800 Series - Disco: SSD 256 GB x 4 (RAID 01)
Lucciano
Prode Principiante
Messaggi: 167
Iscrizione: lunedì 11 febbraio 2013, 15:14

Re: [LARAVEL] Classi View e Redirect

Messaggio da Lucciano »

Grazie SuperStep. Mi rileggerò e studierò quanto hai detto con calma. Devo ancora approfondire Laravel per capire tutto bene
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 8 ospiti