PHP 之 this self parent static 对比
程序员文章站
2024-02-16 23:57:28
...
this 绑定的是当前已经实例化的对象 这样长出现的问题: 如果你在一个父类中使用$this调用当前一个类的方法或者属性,如果这个类被继承,且在相应的子类中有调用的属性或者方法是,则父类中的$this调用的方法或者属性会使用子类中的方法。 ? php class basePa
this 绑定的是当前已经实例化的对象
这样长出现的问题: 如果你在一个父类中使用$this调用当前一个类的方法或者属性,如果这个类被继承,且在相应的子类中有调用的属性或者方法是,则父类中的$this调用的方法或者属性会使用子类中的方法。
php class baseParent { static $counter = 0; function getName() { return 'baseParent'; } function printName() { echo $this->getName() . "\n"; } } class base extends baseParent { static $counter = 0; function addCounter() { return self::$counter +=1; } function getName() { return 'base'; } } $one = new base(); $one->printName();
输出: base
parent 指向当前对象的父类的
self 指向当前类本身的,不指向任何已经实例化的对象的,一般用于指向类中的静态变量和静态方法: 因为静态方法和静态的变量是不能实例化到对象当中的,它只存在于当前类中
php class baseParent { static $counter = 0; } class base extends baseParent { function addCounter() { return self::$counter +=1; } } $one = new base(); echo $one->addCounter() . "\n"; $two = new base(); echo $two->addCounter() . "\n"; echo baseParent::$counter;
输出:1 2 2
static 后期静态绑定:
static::不再被解析为定义当前方法所在的类,而是在实际运行时计算的。也可以称之为"静态绑定",
因为它可以用于(但不限于)静态方法的调用。
php class baseParent { static $counter = 0; function getName() { return 'baseParent'; } function printName() { echo static::getName() . "\n"; } } class base extends baseParent { static $counter = 0; function addCounter() { return self::$counter +=1; } function getName() { return 'base'; } } $one = new base(); $one->printName();
输出: base
下一篇: php基础学完该学什么了
推荐阅读
-
PHP 之 this self parent static 对比
-
PHP面向对象之-static
-
php中self,$this,const,static,->的使用_PHP教程
-
PHP代码优化之成员变量获取速度对比_PHP
-
this,self,parent 差别 以及 PHP双冒号:的用法
-
php面向对象类中的$this,static,final,const,self及双冒号 : 这几个关键字使用方法
-
php面向对象的简单总结 $this $parent self
-
PHP 中 new static 跟 new self 的区别
-
PHP了解之一:this,self,parent三个关键字之间的区别【转】
-
php面向对象类中的$this,static,final,const,self这几个关键字使用方法。