我已经快速搜索到找到答案,但老实说,我甚至不能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
。
如果我做不到那么那很好但是如果可能的话会很酷。
干杯。
答案 0 :(得分:1)
你可以尝试一个简单的:
if(!$object)
{
$object = new $table();
$object->set($field, $value);
}