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

Edited by stablum
Link to comment
Share on other sites

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.

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • 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.