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


Validate Certain PHP Class Methods are Called

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

<?php
try { 
   $obj = new MyClassName();
   $obj->Method1($var);
   $obj->Method2($var);
   $obj->Method3($var);
   $obj->Method4($var);
} catch(Exception $e) { 
}
?>

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

起初,我在__construct()中调用所有必需的方法,然后再次调用这些相同的方法,以防我需要更改东西。

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

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

基本上有几种方法。甚至有一种模式叫做责任链!

你需要在运行中改变方法的执行吗?您可以创建一些场景,例如

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');时,我知道代码会在内部处理它通过尝试,一些异常你会覆盖所有内容