验证某些PHP类方法是否被调用

时间:2015-08-12 20:18:59

标签: php class methods

我有一个类,其中大多数方法都需要运行。 我通常在实例化Object之后调用这些方法。

<?php

try { 
   $obj = new MyClassName();
   $obj->Method1($var);
   $obj->Method2($var);
   $obj->Method3($var);
   $obj->Method4($var);

} catch(Exception $e) { 

}
?>

随着我的课程的增长,以及更多的方法被引入,我发现我需要确保调用某些方法。

首先,我在__construct()中调用了所有必需的方法,然后再次调用相同的方法,以防我需要改变。

我的另一种验证方法是运行get_object_vars()并检查是否存在特定属性。

我不介意我目前的验证方式,但我必须询问是否有更简单/更好的方法。

1 个答案:

答案 0 :(得分:0)

你基本上可以采取多种方式。甚至还有一种名为Chain of Responsability的模式!

您是否需要随时更改方法执行?你可以创建一些场景,例如

class Scenarios 
{

   public $availableScenarios = array('carPayment' => 'car payment', 
                             'carStatus' => 'car status', 
                             'carPriceCalculator' => 'calculate car price');

   public function __consctruct($myChainedExecution)
   {

       foreach ( $this->$myChainedExecution() as $executedMethod ) 
       {

         if ( in_array(!$myChainedExecution ,array_values($this->availableScenarios))) {  
             Throw new \InvalidArgumentException('Process not recognized!');
         }             

         if( !$this->$executedMethod() ) {
             Throw new \BadMethodCallException("error on $executedMethod method ");
         }

         return true;            

       }     

   }

   public function carPayment()
   {
      return  array('method1',
                    'method2',
                    'method3');
   }


  //would return true or false using attributes for internal values
  public function method1(){}
  public function method2(){}
  public function method3(){}

}

因此,当您致电$process = new Scenario('car payment');时,我知道代码会在内部通过尝试来解决这个问题,而某些例外情况则会让您了解所有内容