Propel verwendet Peer
Klassen und Doktrin verwendet Table
Klassen als eine Möglichkeit, entsprechende Objekte und Objekteigenschaften zu manipulieren, ohne das eigentliche Objekt mit static
Methoden zu verschmutzen.Laravel (Eloquent) Tabelle || Peer-Entsprechung
Nach flüchtigen Blick des Laravel (eloquent) Docs, sah ich nichts, was eloquent bietet für die gleiche Funktionalität wie Peer
oder Table
. Meine Frage ist, bietet Laravel (oder eloquent) einen Namespace für solche Klassen, oder verwende ich einfach Table
und lassen Autoloader kümmern sich um den Rest?
// Example use of a table class in doctrine 1.2
$user = UserTable::getInstance()->findById(1);
- Update 1-
Layman Beispiel dafür, wie eine Lehre Tabellenklasse verwendet werden können:
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'));
}
Der Zweck der Lehre Tabellenklasse ist eine api zu schaffen für Aktionen gegen entsprechende Objekte, die nicht in der Steuerung sein sollten, wird im obigen Beispiel die Klasse linkFoo
die bereitgestellten foos mit dem jeweiligen Benutzerobjekt verknüpfen.
Ich empfinde die Trennung zwischen Objekten und "Tisch" -Klassen als wichtig, da ein Objekt nicht wissen sollte, wie es sich selbst instantiiert oder hydratisiert.
Können Sie erklären, was über dem Beispiel erreicht oder was genau es tut? – aethergy
Mit Eloquent haben Sie nur eine Klasse pro Modell (und normalerweise eine Datenbanktabelle), aber Sie müssen sie nicht mit irgendetwas "verschmutzen". Bitte lesen Sie die Dokumentation und/oder klären Sie, was Ihr Problem ist. – lukasgeiter
Ich sagte nicht verschmutzen es mit "irgendetwas", ich war spezifisch über "statische" Methoden. Ist es sinnvoll, das Objekt gemäß obigem Beispiel an sich selbst zu übergeben? –