174 php 延迟绑定 抽象类 self call_user_func_array

来源:互联网 发布:原生js 实现swipe效果 编辑:程序博客网 时间:2024/06/05 09:36

延迟绑定 抽象类 self call_user_func_array


background

我在抽象类中规定了一系列流程,而且其中几个流程需要在子类中实现

abstract class a {    function a(){        call_user_func_array(array(self,"_a"));    }    abstract function _a(); }class b extends a {    function _a(){        echo "_a";    }}$b = new b();$b -> a();

运行一下 并没有输出”_a”

猜想 self指向了 a

实际上, this是指向当前对象的, self是指向当前类的
字面上理解的话,谁new出来的实例 this 就指向谁,代码在哪个class里面,self 就指向那个class

因此,以下两种写法并不相同:

call_user_func_array(array(self,"_a"));call_user_func_array(array($this,"_a"));

在有子类的情况下,第一种写法优先使用父类a中的方法_a(),第二种优先使用子类b的方法_a()

0 0
原创粉丝点击