告诉ADD_FILTER您希望传递给函数的参数数量有什么意义?

时间:2015-05-22 作者:neubert

在wp中包括/插件。php(apply\\u filters)有:

    foreach( (array) current($wp_filter[$tag]) as $the_ )
        if ( !is_null($the_[\'function\']) ){
            $args[1] = $value;
            $value = call_user_func_array($the_[\'function\'], array_slice($args, 1, (int) $the_[\'accepted_args\']));
        }
那么,如果执行9999,函数将通过比它需要的更多的参数?这是个什么问题?如果不需要这些参数,请不要将它们放在函数声明中。向其声明的函数传递更多参数会让人相信它接受的函数甚至不会引起PHP注意,事实上正是因为这样,func\\u get\\u args()才是一个有用的函数。

我的推理是错误的,还是您不想告诉函数向其传递9999个变量的原因?

1 个回复
最合适的回答,由SO网友:fuxia 整理而成

原因是您可以将本机PHP函数注册为回调。如果将更多参数传递给他们,那么他们就会发出警告。

想象一个过滤器可以传递6个参数trim() 作为回调。PHP现在将引发错误:

警告:中trim()的参数计数错误…

一些自定义回调也可能会根据传递的参数量更改其行为。这肯定不是好代码,但这样的代码是存在的,如果WP现在改变它当前的行为,它就会崩溃。

结束

相关推荐

JQuery Plugins in Wordpress

我已经能够在某种程度上拼凑出应该如何做到这一点,但我真的很难做到这一点。我想使用Table Sorter插件(http://tablesorter.com) 在自定义页面模板中显示数据,但我不确定它是否正确。我已经钩住了“wp\\u enqueue\\u scripts”,并使用此函数将表分类器JS文件排入队列。我相信这是正确的,但是我还需要在JQuery Ready()函数中放置一行,但是我不确定如何从自定义页面模板中执行此操作。有人能解释一下吗?<?php /* Templat