php中的后期静态绑定】的更多相关文章

后期静态绑定PHP手册 使用的保留关键字: static 定义: static:: 不再被解析为定义当前方法所在的类,而是在实际运行时计算的.也可以称之为"静态绑定",因为它可以用于(但不限于)静态方法的调用. self与static的区别: self调用的就是本身代码片段这个类,而static调用的是从堆内存中提取出来,访问的是当前实例化的那个类(即static作用于当前调用的类) 示例一(在静态环境下) <?php class A { public static functi…
在我们以往中,在类中使用self关键字的时候都是指向了被调用方法定义时的类,而非原始的调用类. 例如: class Animal{ static $IQ_lv_avg = 1; public static function myiqlvavg(){ echo self::$IQ_lv_avg.PHP_EOL; } public static function test(){ self::myiqlvavg(); } } class Dog extends Animal{ static $IQ_l…
PHP后期静态绑定的(late static bindings) 理解PHP延迟静态绑定 static::中的static其实是运行时所在类的别名,并不是定义类时所在的那个类名.这个东西可以实现在父类中能够调用子类的方法和属性. 使用(static)关键字来表示这个别名,和静态方法,静态类没有半毛钱的关系,static::不仅支持静态类,还支持对象(动态类). 转发调用: 所谓的"转发调用"(forwarding call)指的是通过以下几种方式进行的静态调用,self::,paren…
php后期静态绑定 自 PHP 5.3.0 起,PHP 增加了一个叫做后期静态绑定的功能,用于在继承范围内引用静态调用的类. 虽然也可以调用非静态方法,但是不会在运行时绑定. static 不再只是简单的静态修饰关键字.而是可以像下面这样调用类的静态方法,非静态方法,为什么静态非静态要分开说呢,因为调用的效果是不一样的. <?php class  A  { public static function  who () { echo  __CLASS__ ; } public static fun…
先说一下__CLASS__,get_class() ,  get_called_class() 区别: __CLASS__获取当前的类名, get_class()与上面一样,都是获取当前的类名, get_called_class()获取当前主调类的类名.参考程序: class A { public function say() { echo 'a is called by'.__CLASS__.'<br/>'; echo 'a is called by'.get_class().'<br…
self 是个孝子 不管后来 谁是它的领导(调用它)  谁生了它  它就听谁的 子类调用父类的方法 self 的生存空间是父类 不管是不是子类调用 我生在哪 我就在哪个类里面找属性/方法 static  就是所谓的后期静态绑定 static 一切听命令  是谁调用的它  它就听谁的 子类调用的 我就找子类的属性/方法 我不管我(代码) 是不是写在父类里面…
<?php class test{ //创建test类 public function __construct(){ static::getinfo(); //后期静态绑定 } public static function getinfo(){ echo '实例化一个test类的对象<br />'; } } class test1 extends test{ //创建继承自test类的test1类 public static function getinfo(){ echo '实例化一个…
<?php class test{ //创建test类 public function __construct(){ self::getinfo(); //后期静态绑定 } public static function getinfo(){ echo '实例化一个test类的对象<br />'; } } class test1 extends test{ //创建继承自test类的test1类 public static function getinfo(){ echo '实例化一个te…
基础篇了解大部分数组处理函数 array_chunk — 将一个数组分割成多个    array_column — 返回数组中指定的一列    array_combine — 创建一个数组,用一个数组的值作为其键名,另一个数组的值作为其值(另一种意义的合并数组) array_flip — 交换数组中的键和值 array_key_exists — 检查数组里是否有指定的键名或索引 array_key_first — Gets the first key of an array    array_k…
self.static 和 $this 的区别为了更好地理解 self.static 和 $this 的区别,先来看一个示例. <?phpclass A { protected $name = 'A'; static $alias = 'a'; const HASH = 'md5'; public function dd() { echo $this->name; echo '--'; echo static::$alias; echo '--'; // 后期静态绑定 echo static:…