欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

通过工厂模式来认识PHP的静态延迟绑定

程序员文章站 2022-03-25 11:25:11
...
通过简单的工厂模式来认识PHP的静态延迟绑定
';        echo self::$name;    }}var_dump(StaticDemo::staticInstance());var_dump(Demo::$name);//抽象类只是不能实例化对象?>

注意抽象类里的selfInstance方法是错误的,内部使用的return new self()是解析上下文,即调用此方法最初定义的地方,最初是在抽象类中,自然实例化报错

在类中 new self() new static()都可以实例化类对象,但self是解析上下文,即实例化定义自己的类,static则是根据当前上下文是哪一类在调用自己而将自己指向此类

静态延迟绑定

new self();

实例化一个自己被定义的类的对象

new parent();

实例化一个自己的父类对象

new static();

实例化一个调用自己的当前类的对象