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

不言
不言 原创
2023-04-03 17:54:01 1935浏览

本篇文章给大家带来的内容是关于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中非转发调用以及转发调用的代码实例的详细内容,更多请关注php中文网其它相关文章!

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。