Propel utilizza le classi Peer
e la dottrina utilizza le classi Table
come modo per manipolare i rispettivi oggetti e le proprietà dell'oggetto, senza dover inquinare l'oggetto reale con i metodi static
.Tabella Laravel (Eloquent) || Peer equivalent
Dopo sguardo superficiale del laravel (eloquenti) documenti, non ho visto qualche cosa che eloquenti prevede la stessa Peer
o Table
come funzionalità. La mia domanda è, laravel (o eloquente) fornisce uno spazio dei nomi per tali classi, o devo semplicemente usare Table
e lasciare che il caricatore automatico si occupi del resto?
// Example use of a table class in doctrine 1.2
$user = UserTable::getInstance()->findById(1);
- Aggiornamento 1-
Layman esempio di come può essere utilizzato una classe di tabella di dottrina:
class UserTable
{
public static function getInstance()
{
return Doctrine_Core::getTable('User');
}
public function linkFoo($userId, array $foos)
{
$user = $this->findById($userId);
foreach ($foos as $foo) {
$user->foo = $foo;
$user->save();
}
}
}
// SomeController.php
executeSaveFoo()
{
UserTable::getInstance()->linkFoo($this->getUser(), array('foo1', 'foo2'));
}
Lo scopo della classe tavolo dottrina è quello di fornire un'API per azioni contro i rispettivi oggetti che non dovrebbero essere nel controller, nell'esempio sopra la classe linkFoo
collegherà foos forniti al rispettivo oggetto utente.
Ritengo che la separazione tra gli oggetti e le classi "table" sia importante, poiché un oggetto non dovrebbe sapere come istanziare né idratarsi.
Ci può spiegare che cosa il vostro esempio di cui sopra compie o che cosa esattamente si sta facendo? – aethergy
Con Eloquent hai solo una classe per modello (e di solito una tabella di database) ma non devi "inquinarla" con niente. Si prega di leggere la documentazione e/o chiarire qual è il tuo problema. – lukasgeiter
Non ho detto di inquinarlo con "nulla", ero specifico sui metodi "statici". Ha senso passare l'oggetto a se stesso secondo l'esempio sopra? –