在深入了解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 ?
在PHP(和许多其他OOP语言)中,可以在接口中使用空函数(或者更准确地说,是方法)。继承该接口的任何类都必须实现声明的函数。然而,上次我检查(这是,2分钟前),WordPress并不是一个真正的面向对象系统,所以转发到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 } }
我猜wordpress将有条件地包含其中一个或另一个文件。wordpress的底层API期望定义这些函数并调用它们。扩展本身可以自由地实现或不实现函数,但是它至少必须提供空函数体。这背后的概念很像OOP中的接口工作。