【发布时间】:2015-12-27 08:56:56
【问题描述】:
我正在尝试从一个类中调用一个全局函数。函数的名称包含在类的公共属性之一中。我遇到了一个我设法解决的小语法问题,但我认为解决方法(一个中间变量)不优雅,我正在寻找一种更合适的方法来解决这个问题。
考虑以下代码sn-p:
class Foo {
public $theFuncName = '';
public function bar () {
if ($this->theFuncName != '') {
$theFuncName = $this->theFuncName;
$theFuncName ();
}
}
}
function myGlobalFunc () {
echo "This is myGlobalFunc\n";
}
$foo = new Foo ();
$foo->theFuncName = 'myGlobalFunc';
$foo->bar ();
我在 bar() 中使用中间变量 $theFuncName 因为直接引用 $this->theFuncName() 意味着Foo 类包含一个方法 theFuncName,但事实并非如此。
在没有中间变量的情况下调用 $this->theFuncName 的内容所引用的函数的正确语法是什么?
【问题讨论】:
-
封装的目的是什么?为什么不直接拨打
myGlobalFunc()?
标签: php function class syntax global