在看到word核心代码的深度时,我遇到了一个文件,它有许多空函数,例如:
/**
* @ignore
*/
function apply_filters() {}
我真的不知道在php中声明空函数有什么用。
我在第34-37行的 wp-admin / list-scripts.php中找到了这个
并在 wp-include / plugin.php第163 - 207行中重新声明相同的函数,其中包含一些作品
我总共有两个问题
在php
中声明一个空函数有什么用?为什么wordpress din显示任何 Fatal error:
,因为已声明了相同的功能。 ?
答案 0 :(得分:1)
我猜wordpress会有条件地包含一个或另一个文件。 wordpress的低级API期望定义此函数并调用它们。扩展本身是否可以自由地实现该功能,但它至少提供了空函数体。这背后的概念很像OOP中的接口。
答案 1 :(得分:1)
在PHP(以及许多其他OOP语言)中,可以在接口中使用空函数(或更确切地说,方法)。继承该接口的任何类都必须实现声明的函数。但是,上次我检查(也就是2分钟前),WordPress并不是一个真正的OOP系统,所以转发到2。
list-scripts.php不是默认的WordPress文件 - 我无法在任何WP安装中找到它。您可能希望通过在文件顶部放置die('called');
并查看它是否被执行来进行测试。因此,WordPress不会遇到重复的函数声明,也不会引入致命错误。
现在,即使如果 list-scripts.php是默认的WP文件,在使用WP(和一般的PHP)时,你经常会看到:
if (!function_exists('apply_filters')) {
function apply_filters($arg1, $arg2) {
// code is poetry
}
}
这样可以确保只在以前没有声明函数,并避免致命错误。