Jump to content

Propel peer static classes: how to avoid to write duplicated code?


stablum

Recommended Posts

So I have a few tables configured in Propel, with generated Peer static classes. This is the framework I have to use and I cannot change it. The problem is that I need to perform very similar search operation on different tables, that obviously have different Peer classes. This lead to duplicated code.

Now, I am not such that great guru of PHP, so maybe there is some construct (avoiding eval) that might help me in this case; I really would like to avoid writing duplicated code that performs the same exact calls on just different static Peer classes.

example from a method of a class I am writing:

 

$criteria = new Criteria();
$criteria->add(FoobarPeer::CONTRACTNR,$data['contractnr']);
$result = FoobarPeer::doSelect($criteria);
if(count($result) > 1){
  throw new FoobarException("status: more than one row with the specified contractnr.");
}
if(count($result) == 0){
  // no object with given contractnr. Create new one.
  $obj = $this->factory->createORM("foobar");
  $obj->setCreatedAt(time());
} else {
  // use and update existing object.
  $obj = $result[0];
}

 

 

(as you can see I managed to write a factory method for the row object, but obviously I cannot do this for static classes)

Anyone got some nice solution?

thanks :)

P.S. sorry for my approximative english :P

this is real code. Except for the fact that I replaced some names with "foobar". I cannot spread my company's code like it's open source. What will be duplicated, as previously stated, is the calls to methods in the Peer class, but performed on a different Peer class. Unfortunately I cannot use Query classes; I have to stick on Peer classes.

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.