首页 > 解决方案 > 是否有一个函数可以用一个包含类名作为字符串的变量来构造一个可调用对象?

问题描述

我正在尝试仅使用一个包含该函数所在类的名称的字符串来构造一个可调用对象。

我尝试了以下方法:

$class_name = "RandomInt";

// MediaWiki uses setFunctionHook()
$parser->setFunctionHook( $class_name, [constant($class_name . '::class'), 'defineParser']);

它给了我错误:

Argument 2 passed to Parser::setFunctionHook() must be callable, array given.

如果我没有“字符串约束”,这也是一个工作示例:

$parser->setFunctionHook( 'RandomInt', [RandomInt::class, 'defineParser']);

标签: phpclass

解决方案


试试这个语法:$parser->setFunctionHook( $func, [ __CLASS__, $func ], Parser::SFH_NO_HASH );

例子:

$parser->setFunctionHook('defineParser', [RandomInt::class, 'defineParser']);

推荐阅读