我有一个类,其中大多数方法都需要运行。 我通常在实例化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()
并检查是否存在特定属性。
我不介意我目前的验证方式,但我必须询问是否有更简单/更好的方法。
答案 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');
时,我知道代码会在内部通过尝试来解决这个问题,而某些例外情况则会让您了解所有内容