У меня был быстрый поиск, чтобы найти ответ на этот вопрос, но, честно говоря, я даже не на 100% знаю, что искать.
Это скорее проблема оптимизации, чем реальная проблема, но я мог бы помочь с помощью.
В моем проекте Symfony 1.4 я создал несколько методов для «получения или создания объектов», например:
protected function getOrCreateManufacturer($name)
{
$manufacturer = ManufacturerTable::getInstance()->findOneBy('name', $name);
if(!$manufacturer)
{
$manufacturer = new Manufacturer();
$manufacturer->setName($name);
}
return $manufacturer;
}
У меня есть несколько таких для разных объектов, каждый из которых делает одно и то же. Я пытаюсь создать метод, который может заменить большую часть кода внутри этих методов, чтобы все они могли вызывать его так:
protected function getOrCreateManufacturer($name)
{
return $this->getOrCreateObject('Manufacturer', 'name', $name);
}
protected function getOrCreateObject($table, $field, $value)
{
$object = Doctrine::getTable($table)->findOneBy($field, $value);
if(!$object)
{
// create object here
$object->set($field, $value);
}
return $object;
}
Но я не могу понять, как я могу создать экземпляр моих Объектов.
Все объекты, которые я пытаюсь создать, расширяются sfDoctrineRecord
.
Если я не могу этого сделать, то это нормально, но было бы здорово, если бы это было возможно.
Приветствие.