php中非转发调用以及转发调用的代码实例

Posted on

本篇文章给大家带来的内容是关于php中非转发调用以及转发调用的代码实例,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

静态访问类的成员:

1.非转发调用

1)类名明确(A::funcA())

2.转发调用

    1)self::     2)parent::     3)static::     4)forward_static_call()     5)get_called_class()

注意:
“后期绑定”的意思是说,static:: 不再被解析为定义当前方法所在的类,而是在实际运行时计算的。也可以称之为“静态绑定”,因为它可以用于(但不限于)静态方法的调用。

<?php class A {     public static function foo() {         static::who();     }      public static function who() {         echo __CLASS__."/n";     } }  class B extends A {     public static function test() {         A::foo();         parent::foo();         self::foo();     }      public static function who() {         echo __CLASS__."/n";     } } class C extends B {     public static function who() {         echo __CLASS__."/n";     } }  C::test(); ?>

运行结果:

A C C

Note:
在非静态环境下,所调用的类即为该对象实例所属的类。由于 $this-> 会在同一作用范围内尝试调用私有方法,而 static:: 则可能给出不同结果。另一个区别是 static:: 只能用于静态属性。

继承的财产属于自己

继承链 优先访问当前类,依据保留字特性进行访问,然后依据继承链进行访问。

$this 访问成员 (调用上下文)

self:: 访问成员(解析上下文)

<?php   class A{     protected $value = "A value";       public function printValue(){         echo $this->value;     } } class B extends A{    protected $value = "B value"; } $app = new B(); $app->printValue();
运行结果:B value
<?php   class A{     //只有将属性定义为静态的才能使用self::进行调用     static protected $value = "A static value ";     public function printValue(){         echo self::$value;     } }   class B extends A{     static protected $value = "B static value"; }   $app = new B(); $app->printValue();
运行结果:A static value
<?php class A{     static protected $value = "A static value "; }   class B extends A{     public function printValue(){         echo self::$value;     } } $app = new B(); $app->printValue();
运行结果:A static value

相关推荐:

PHP想要实现页面跳转功能具体怎么操作?(函数标签示例)

php下拉菜单及多级栏目怎么实现的?(代码实测)

php和html结合实现上传图片文件到服务器的代码

以上就是php中非转发调用以及转发调用的代码实例的详细内容,更多请关注清酒竹杯其它相关文章!

  • 相关标签:
  • 本文原创发布清酒竹杯 ,转载请注明出处,感谢您的尊重!
  • Leave a Reply

    Your email address will not be published. Required fields are marked *