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

不言
Lepaskan: 2023-04-03 17:54:01
asal
2513 orang telah melayarinya

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

静态访问类的成员:

1.非转发调用

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

2.转发调用

    1)self::
    2)parent::
    3)static::
    4)forward_static_call()
    5)get_called_class()
Salin selepas log masuk

注意:
“后期绑定”的意思是说,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();
?>
Salin selepas log masuk
运行结果:
A
C
C
Salin selepas log masuk
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();
Salin selepas log masuk
运行结果:B value
Salin selepas log masuk
<?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();
Salin selepas log masuk
运行结果:A static value
Salin selepas log masuk
Salin selepas log masuk
<?php
class A{
    static protected $value = "A static value ";
}
 
class B extends A{
    public function printValue(){
        echo self::$value;
    }
}
$app = new B();
$app->printValue();
Salin selepas log masuk
运行结果:A static value
Salin selepas log masuk
Salin selepas log masuk

相关推荐:

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

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

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

Atas ialah kandungan terperinci php中非转发调用以及转发调用的代码实例. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan