Trying to implement pre/post method code: better to use methods or a parent class?

Posted by Will on Programmers See other posts from Programmers or by Will
Published on 2012-11-13T18:27:05Z Indexed on 2012/11/13 23:22 UTC
Read the original article Hit count: 158

Filed under:
|

I'm finding it difficult to frame this question so ... I want to execute code both before and after a method runs in PHP. There are, as far as I know, two ways to implement this:

Method One: pre and post methods

class Model
{
  function find($id)
  {
    $this->_precode();
    // ... do stuff
    $this->post_code();
  }
}

Add the calls to _precode() and _postcode() to each method where I need this functionality.

Method Two: __call and method naming

class Model extends PrePost
{
  function prepost_find($id)
  {
    // ... do stuff ...
  }
}

class PrePost 
{
  function __call($method,$param) 
  {
    $method = "prepost_$method";
    // .. precode here ..
    $result = $this->$method($param);
    // .. postcode here ..
  }
}

This relies on naming a method in a specific way in the inheriting class. Is there a preferred way of doing this? The call method can be made to only handle its specific cases and even defer to a child class's call if there is one.

I'm not looking for opinions; I'm looking to find out if there are valid reasons to choose one way over another.

© Programmers or respective owner

Related posts about php

Related posts about best-pactice