-1

我今天在思考所有 OOP 是如何工作的。

我在想:使用给定的文本值检查方法是否存在不是很好吗?

那么,如果我有一个文本 function_name_in_text_format,我如何检查方法 function_name_in_text_format 是否存在?

我听说了一个解决方案,使用 $$,但找不到真实的例子

4

2 回答 2

3

您可以使用is_callable()函数。

验证变量的内容是否可以作为函数调用。这可以检查简单变量是否包含有效函数的名称,或者数组是否包含正确编码的对象和函数名称。

顾名思义,还有function_exists()method_exists()函数可以使用。

使用 $$ 的方法称为变量变量

变量变量获取变量的值并将其视为变量的名称。

下面包括一个使用示例is_callable()

//
//  Simple variable containing a function
//

function someFunction() 
{
}

$functionVariable = 'someFunction';

var_dump(is_callable($functionVariable, false, $callable_name));  // bool(true)

echo $callable_name, "\n";  // someFunction

//
//  Array containing a method
//

class someClass {

  function someMethod() 
  {
  }

}

$anObject = new someClass();

$methodVariable = array($anObject, 'someMethod');

var_dump(is_callable($methodVariable, true, $callable_name));  //  bool(true)

echo $callable_name, "\n";  //  someClass::someMethod

?> 
于 2012-07-10T22:13:39.737 回答
2

这可以通过一种叫做反射的东西来实现。

于 2012-07-10T22:12:54.350 回答