【发布时间】:2013-02-18 15:54:58
【问题描述】:
我正在构建一个类,到目前为止大致类似于以下内容
在 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 语句或 switch 放入可以处理此功能的 doFunction 中,但由于我不喜欢闭包/lamdas,我不确定这是否适合他们,或者我是否适合完全脱离基地
【问题讨论】:
-
PHP 不是 JS。尝试阅读有关变量变量的信息:php.net/manual/en/language.variables.variable.php
-
另外,你可以通过继承解决这个问题
-
@Juan 我在想继承可能会得到这个,但由于它只是两个版本之间不同的一个函数,我想我会看看这是否可以很好地用于将函数存储在变量中,并且如果这是正确使用闭包,因为这个概念对我来说还是相当新的。如果我不能让它工作,我绝对会使用继承。