在php中使用声明空函数

时间:2014-06-24 09:10:48

标签: php wordpress

在看到word核心代码的深度时,我遇到了一个文件,它有许多空函数,例如:

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

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

我在第34-37行的 wp-admin / list-scripts.php中找到了这个

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

我总共有两个问题

在php

中声明一个空函数有什么用?

为什么wordpress din显示任何 Fatal error: ,因为已声明了相同的功能。 ?

2 个答案:

答案 0 :(得分:1)

我猜wordpress会有条件地包含一个或另一个文件。 wordpress的低级API期望定义此函数并调用它们。扩展本身是否可以自由地实现该功能,但它至少提供了空函数体。这背后的概念很像OOP中的接口。

答案 1 :(得分:1)

  1. 在PHP(以及许多其他OOP语言)中,可以在接口中使用空函数(或更确切地说,方法)。继承该接口的任何类都必须实现声明的函数。但是,上次我检查(也就是2分钟前),WordPress并不是一个真正的OOP系统,所以转发到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
        }
    }
    

    这样可以确保只在以前没有声明函数,并避免致命错误。