Toscho使用的技巧是使用对象绕过问题。
假设我们有一个名为xyz
, 这会传递一些帖子内容。这个假设场景的目标是在内容中添加一个我们无法“硬编码”的单词。
以下是基本过滤器:
add_filter( \'xyz\', \'test\' );
function test( $content ) {
return $content;
}
所以我们附加到
$content
, 但是我们如何获得要附加的值呢?这是你问题的症结所在。
要解决此问题,可以使用OOP:
class test_object {
public $appended_value = \'\';
function test( $content ) {
return $content.$this->appended_value;
}
}
$obj = new test_object();
$obj->appended_value = \'hello world\';
add_filter( \'xyz\', array( $obj, \'test\' ) );
这里,类/对象用于存储额外的数据。
另一种方法是使用闭包(不是lambda函数)基于值创建新函数,但这在PHP 5.3之前不起作用,例如:
add_filter(\'xyz\',
function($content) use ($appended_value) {
return $content.$appended_value;
}
);
免责声明:此代码都不是复制粘贴,只是用于演示目的。