我有一个类,其中大多数方法都需要运行。我通常在实例化对象之后调用这些方法。
<?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');
时,我知道代码会在内部处理它通过尝试,一些异常你会覆盖所有内容