在php中声明空函数的用法


Use of declaring empty function in php

在深入了解word press核心代码时,我遇到了一个文件,其中有许多空函数,例如:

/**
 * @ignore
 */
function apply_filters() {}

我真的不知道在php中声明空函数有什么用…

wp-admin/list-scripts.php第34 - 37行

wp-include/plugin.php第163 - 207行中相同的函数被重新声明,其中包含一些作品

我总共有2个问题

在php中声明空函数有什么用

为什么wordpress没有显示任何 Fatal error: ,因为相同的函数已经声明了。div ?

  1. 在PHP(和许多其他OOP语言)中,可以在接口中使用空函数(或者更准确地说,是方法)。继承该接口的任何类都必须实现声明的函数。然而,上次我检查(这是,2分钟前),WordPress并不是一个真正的面向对象系统,所以转发到2。

  2. list-scripts.php不是默认的WordPress文件-我在任何WP安装中都找不到它。您可能希望通过在文件顶部放置一个die('called');来进行测试,看看它是否被执行。因此,WordPress不会遇到重复的函数声明,也不会引入致命错误。

  3. 现在,即使如果 list-scripts.php是一个默认的WP文件,当使用WP(和一般的PHP)时,你经常会看到这个:

    if (!function_exists('apply_filters')) {
        function apply_filters($arg1, $arg2) {
            // code is poetry
        }
    }
    

我猜wordpress将有条件地包含其中一个或另一个文件。wordpress的底层API期望定义这些函数并调用它们。扩展本身可以自由地实现或不实现函数,但是它至少必须提供空函数体。这背后的概念很像OOP中的接口工作。