0

我正在编写一个插件,在添加钩子时,我发现我必须一遍又一遍地为每个子类编写相同的过滤器。因此,如果 B、C 和 D 是 AI 的孩子,则必须使用“b_dosomething”、“c_something”和“d_something”的键制作一个过滤器,以便让孩子们接受这个过滤器。

有没有办法更通用地做到这一点?但只是添加'dosomething'并传递一些东西......也许?

4

1 回答 1

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() 的开销。

希望这能回答你的问题

于 2013-08-19T07:10:26.173 回答