企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
## **this、self、static、parent** **this **:只能在**类的内部**调用;$this是指向对象实例的一个指针(即this是类的对象.类对象在实例化的时候来确定指向,即需要new才能存在),不指向任何其他对象或类 **self** :self是指向**类本身或者当前对象所属的类**,也就是self是**不指向任何已经实例化的对象** **static** :运行时中的当前类 **parent** :是指向父类的指针,一般我们**使用parent来调用父类的****构造函数**(我 们这里频繁使用指针来描述,是因为没有更好的语言来表达) ~~**super** :关键字用于从子类访问父类的变量和方法(java的)~~ self与static无非就是看它们定义在哪的 当self定义在父类时,不管实例化子类还是父类访问的方法都是父类的 static则是谁实例化调用的谁 例子 ``` class Fruit{ public function getYellow(){ echo "Default Yellow"; } public static function callself() { //php里,一个方法被self:: 后,它就自动转变为静态方法 self::getYellow(); } public static function callstatic() { static::getYellow(); } } class Apple extends Fruit{ public function getYellow(){ echo "red"; } } Apple::callself();//Default Yellow Apple::callstatic();//red Fruit::callself();//Default Yellow Fruit::callstatic();//Default Yellow ```