zoukankan      html  css  js  c++  java
  • php中非静态环境下转发调用的代码实例

    的。也可以称之为“静态绑定”,因为它可以用于(但不限于)静态方法的调用。


    下面是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__." ";
    }
    }

    class B extends A {
    public static function test() {
    A::foo();
    parent::foo();
    self::foo();
    }https://www.hfxskyyj.com/

    public static function who() {
    echo __CLASS__." ";
    }
    }
    class C extends B {
    public static function who() {
    echo __CLASS__." ";
    }
    }

    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

  • 相关阅读:

    k
    通过类名调用类方法
    类Area的getArea方法是一个重载方法
    构造cry
    两个lader对象共享bottom
    向一个方法的基本数据类型参数传值
    Circle
    常量的用法
    显示本机时间
  • 原文地址:https://www.cnblogs.com/zqw111/p/12922456.html
Copyright © 2011-2022 走看看