Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用OOP在wordpress中添加_操作?_Php - Fatal编程技术网

Php 使用OOP在wordpress中添加_操作?

Php 使用OOP在wordpress中添加_操作?,php,Php,我正在学习OOP,我想我已经掌握了它的窍门。我的问题是为什么wordpress样板插件的作者编写了这样的add action函数 add_action('admin_init', array(&$this, 'admin_init')); 根据codex,我理解了add_actionhook,要传递的参数是$tag“挂接$function_to_add的操作的名称”,以及要挂接的函数$function_to_add 我理解OOP中的函数是方法,我可以理解为什么这可能会改变语法,但这只是

我正在学习OOP,我想我已经掌握了它的窍门。我的问题是为什么wordpress样板插件的作者编写了这样的add action函数

add_action('admin_init', array(&$this, 'admin_init'));
根据codex,我理解了
add_action
hook,要传递的参数是
$tag
“挂接$function_to_add的操作的名称”,以及要挂接的函数
$function_to_add

我理解OOP中的函数是方法,我可以理解为什么这可能会改变语法,但这只是一个模糊的表示,我想清楚地回答作者为什么使用数组,然后使用
和$this
。我理解为什么人们会使用
$this->property
,但对
和$this
不太确定

这就是你所指的方法吗?如果是这样,我仍然不理解数组,为什么它看起来不像
$this->admin\u init

顺便说一下,结构看起来有点像这样

    class my_plugin_settings {

            public function __construct() {

                    // register actions
                    add_action('admin_init', array(&$this, 'admin_init'));

            } 

            public function admin_init() {

                    //Settings here
            }
    }

&这提供了连接到admin_init函数的后台PHP函数的上下文。查看add_操作的声明或查看


PHP就是这样知道如何在该对象中使用函数的,而不是全局级函数

好的,谢谢您的解释和链接。。我在谷歌上搜索了这个,但由于符号的缘故,没有得到任何好的结果。好的,(noob问题)这使得
和$this
成为键,函数
admin\u init
成为值?我不知道为什么要使用数组,而不仅仅是说
$this->funcName
。希望大家能够理解其中的原因,但如果您知道,如果您能简单地解释一下,那就太好了:)您正在传递一个数组,但它符合
callable
类型。这就是可调用项的结构。如果传递了一个数组,它将假定键是要调用的对象,值是函数。如果只传递了一个字符串,PHP将假定它是一个全局级别的函数并调用它。啊,好吧,这更能说明问题。没有其他方法可以编写相同的语法吗?看起来这
Foo::test
是引用对象/方法的一种方式?这种语法是新的,因为我假设它只在OOP中使用,但现在我正在使用OOP,我看到了很多。没有(据我所知),因为这是可调用的
的语法。别忘了,你没有传递函数。您正在传递对对象的引用和函数名。PHP使用内省来确定实际调用哪个函数。新版本的PHP有一流的函数,所以这在将来可能是可能的,但现在这是实现它的方法。好吧,这对我来说确实缩小了它的范围,我刚刚在PHP手册中看到一个参考,它需要一些滚动,它还包括扩展类,这可能很快就会派上用场。