困惑的编写一个插件,其他回调也可以很好地使用它。但添加元框时,回调失败,出现错误:
PHP警告:call\\u user\\u func()要求参数1为有效回调,第一个数组成员不是有效的类名或对象
相当标准的错误,但我不明白为什么我会收到它。我在一节课上有以下内容。
function __construct(){
add_action( \'init\', array( &$this, \'init\' ) );
}
function init() {
add_action(\'add_meta_boxes\', function() { add_meta_box(\'model\', \'Parent\', array(&$this,\'parent_meta_box\'), \'model\', \'side\', \'high\');});
}
function parent_meta_box( $post ) {
// whatever happens here...
}
据我所知,我使用&;正确地进行了回调;虽然出现了这种情况,但在metabox中什么也没有呈现,我收到了上面的标准PHP错误。我在我的代码中把它剥离到了这一步,它创建的元框不会在里面放任何东西。我已经把调试登录,它没有达到它,但得到之前和之后。不知道我做错了什么。非常感谢您的帮助。
最合适的回答,由SO网友:fuxia 整理而成
$this
未在闭包范围内定义。将其更改为:
add_action(\'add_meta_boxes\', function() use ($this) {
add_meta_box(\'model\', \'Parent\', array($this,\'parent_meta_box\'), \'model\', \'side\', \'high\');
});
或者最好将两者分开,创建一个真正的方法,而不是闭包。