I've had a quick search to find an answer for this but honestly im not even 100% on what to search for.
This is more of an optimisation issue than an actual problem but I could do with the help.
In my Symfony 1.4 project I have created some methods to "get or create objects" like so:
protected function getOrCreateManufacturer($name)
{
$manufacturer = ManufacturerTable::getInstance()->findOneBy('name', $name);
if(!$manufacturer)
{
$manufacturer = new Manufacturer();
$manufacturer->setName($name);
}
return $manufacturer;
}
I have a few of these for different objects all of which do the exact same thing. I am trying to create a method that can replace a lot of the code inside these methods so that they can all call it like so:
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;
}
But I can't seem to find out how I can create an instance of my Objects.
The objects I'm trying to create all extend sfDoctrineRecord
.
If I can't do it then thats fine but it'd be cool if its possible.
Cheers.