Propel использует классы Peer
, а доктрина использует классы Table
как способ управления соответствующими объектами и объектами, без необходимости загрязнять фактический объект с помощью методов static
.Laravel (Красноречивый) Таблица || Одноранговый эквивалент
После беглого взгляда на ларавельные (красноречивые) документы я не видел ничего такого, что красноречивый обеспечивает одинаковые Peer
или Table
как функциональность. Мой вопрос в том, делает ли laravel (или красноречивым) пространство имен для таких классов, или я просто использую Table
и позволяю автозагрузчику заботиться обо всем остальном?
// Example use of a table class in doctrine 1.2
$user = UserTable::getInstance()->findById(1);
- Обновление 1 -
Лэйман пример того, как может быть использован класс доктрина таблицы:
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'));
}
Цель класса доктрины таблицы является предоставление API для действий против соответствующих объектов, которые не должны находиться в контроллере, в приведенном выше примере класс linkFoo
свяжет предоставленные foos с соответствующим пользовательским объектом.
Я чувствую, что разделение между объектами и «табличными» классами важно, так как объект не должен знать, как создавать экземпляры и не увлажнять себя.
Можете ли вы объяснить, что ваш пример выше выполняет или то, что именно он делает? – aethergy
С Eloquent у вас есть только один класс для каждой модели (и обычно таблица базы данных), но вам не нужно «загрязнять» ее чем угодно. Пожалуйста, ознакомьтесь с документацией и/или уточните, в чем проблема. – lukasgeiter
Я не сказал, загрязняю его «ничего», я был конкретно о «статических» методах. Имеет ли смысл передать объект себе по приведенному выше примеру? –