我正在编写一个插件,在添加钩子时,我发现我将不得不为每个子类反复编写相同的过滤器。因此,如果B,C和D是A的子级,我必须使用“b_dosomething”,“c_something”和“d_something”的键创建过滤器,以便让孩子们接受此过滤器。
有没有办法更一般地做到这一点?但只是添加'dosomething'并传递一些东西......也许?
答案 0 :(得分:0)
在A类中创建一个函数
class A {
public function __construct()
{
$this->apply_filters();
}
public function apply_filters()
{
if(!method_exists($this, 'filter_callback'))
return;
apply_filter('your_filter_here', array($this,'filter_callback'));
}
}
现在是子类,如果你有函数'filter_callback',那么将应用过滤器。
class B extends A{
public function __construct()
{
parent::__construct;
}
public function filter_callback()
{
//do something
}
}
这样,您不必花费额外的时间来重复调用appply_filter()。
希望这能回答你的问题