我正在构建一个类,到目前为止有类似于下面的内容
在main.php中
$coolObject = new CoolObject(true);
foreach($array as $key=>$val)
{
$coolObject->doFunction($val);
}
然后在CoolObject内部:
class CoolObject
{
private $_useFunction;
public function __construct($useFoo)
{
//THIS IS WHERE I NEED HELP
if($useFoo){
$this->_useFunction = $this->_foo();
}
else{
$this->_useFunction = $this->_bar();
}
}
public function doFunction($values)
{
$this->_useFunction($values);
}
private function foo($values){
//do stuff
}
private function bar($values){
//do other stuff
}
}
我意识到我可以把一个if语句或切换到可以处理这个功能的doFunction,但是因为我不熟悉闭包/ lamdas我不确定这是否适合他们或者我是不是完全偏离基地
答案 0 :(得分:1)
你想要实现的(据我所知)是PHP中的函数指针。
你应该看看:Array Pointer to a function in PHP
我仍然认为继承将是解决这个问题的最简单/最简洁的方法。
所以你可能会以:
结束类CoolObject { private $ _useFunction;
public function __construct($useFoo)
{
//THIS IS WHERE I NEED HELP
if($useFoo){
$this->_useFunction = 'foo';
}
else{
$this->_useFunction = 'bar';
}
}
public function doFunction($values)
{
//Edited as @newacct corrects
$this->$_useFunction($values);
}
private function foo($values){
//do stuff
}
private function bar($values){
//do other stuff
}
}