Pagina 1 di 1
[PHP]Collaction
Inviato: mercoledì 11 giugno 2014, 20:26
da Schiavone
Salve ragazzi, sto studiando Laravel. Fin qui tutto bene. Verso la fine del manuale comunque ho avuto un dubbio..
Codice: Seleziona tutto
Route::get('/', function()
{
$albums=Album::all();
var_dump($albums);
}
)
Nel manuale dice...
Il metodo all del model "Album" recupera tutti i record sulla tabella. Il metodo allnon ritorna un array ma una Collection. L'oggetto di tipo collection implementa un'interfaccia che permette agli oggetti di essere iterabili.
Qualcuno potrebbe chiarire?
Re: [PHP]Collaction
Inviato: giovedì 12 giugno 2014, 6:52
da SuperStep
tieni presente che php non e' un linguaggio tipizzato, e come tale, una collezione di oggetti php differisce da una collezione di oggetti Java, quindi, non confonderti.
utilizzando la parola collection intende forse questo:
restituisce un array di istanze ad ogni modello di album.
quindi $albums e' effettivamente un array, dove ogni elemento, rappresenta l'istanza all'oggetto album estratto mediante Eloquent.
Re: [PHP]Collaction
Inviato: giovedì 12 giugno 2014, 7:19
da Schiavone
Infatti... anche io avevo pensato alle collection in Java. Da quanto ho capito non è altro che un iterator che va a ciclare all'interno di una classe restituendone i valori. Ma devo approfondire. Se "risolvo" faccio sapere anche a beneficio di altri
Re: [PHP]Collaction
Inviato: venerdì 13 giugno 2014, 18:04
da SuperStep
puoi ciclare con un semplice foreach($albums as $album) e becchi tutti gli album.
Re: [PHP]Collaction
Inviato: sabato 14 giugno 2014, 12:34
da Zoff
Le Collection in PHP sono uno strumento per effettuare il lazy-loading dei dati (es. dal DB).
Se si utilizzassero gli array si dovrebbero memorizzare in RAM tutti i dati, tramite le collection i dati vengono caricati solo quando vengono realmente utilizzati.
Re: [PHP]Collaction
Inviato: domenica 15 giugno 2014, 19:45
da Schiavone
Grazie Zoff, per caso ti riferisci alla creazione essenziale delle istanze?
Comunque nel seguente manuale:
http://books.google.it/books?id=xs21zvs ... 06&f=false
al capitolo 5 viene descritta la classe Collection. E' questa la classe in cui si parla anche in Laravel?
Ho letto un tuo commento in cui dice che la guida su html.it relativa alla programmazione ad oggetti in php è mancante di alcuni argomenti recenti. Quali sono?
Grazie
Re: [PHP]Collaction
Inviato: lunedì 16 giugno 2014, 10:40
da Zoff
Facendo riferimento alla terminologia di quel libro sì, la collection (tra le altre cose) permette la creazione essenziale delle istanze.
Quella di Lavarel a cui ti riferisci credo sia questa:
http://laravel.com/api/class-Illuminate ... ction.html, cioè la collection utilizzata da Eloquent, l'ORM di Laravel.
Quella è l'implemenazione di Eloquent che non si può assumere minimamente collegata a quella del manuale che hai linkato.
In generale se non si parla esplicitamente di "pattern" o "paradigma" o non si fa riferimento ad una descrizione
formale, il fatto che due classi o elementi abbiano lo stesso nome non significa nulla.
Sono diversi, in particolare tutte le novità a partire da PHP 5.3 (alcune anche di 5.2) e tutto quello che va oltre alla OOP di base.
In quella guida si parla unicamente dei concetti base di OOP comini a tutti i linguaggi e della sintassi per implementare quei concetti.
Re: [PHP]Collaction
Inviato: lunedì 16 giugno 2014, 13:46
da Schiavone
Quindi se voglio capire le collection nell'Eloquen orm di laravel leggere il capitolo 5 di quel manuale è inutile?
Quanto al resto ho visto che in molti manuali (anche in lingua inglese) sul Php la programmazione ad oggetti è trattata come la guida presente su html.it
Conosci un manuale che tratta l'OOP in Php in maniera più approfondita?
Re: [PHP]Collaction
Inviato: lunedì 16 giugno 2014, 14:33
da Zoff
Non è completamente inutile ma è come leggere il manuale di una McLaren mentre di deve mettere le mani su una Ferrari.
I concetti potrebbero essere quelli ma il modo in cui sono realizzati potrebbe essere completamente differente.
Hai già aperto una discussione sui manuali php e ce ne sono decine di altre. Usa la funzione cerca.