mydeer
就像我们从来没有来过这里,但这种感觉似曾相识。
PHP关于 self:: 和 static::

php中调用静态方法可以使self:: 和 static::这里举个例子说明:

<?php    
class A {
    public static function hi() {
        echo __CLASS__,' -> A';
    }
    public static function test() {
        // self::hi(); // 调用当前A类 A::hi(); 输出 A -> A
    	static::hi(); // 调用子B类  B::hi()覆盖了A::hi(); 输出 B -> B
    }
}

class B extends A {
    public static function hi() {
        echo __CLASS__,' -> B';
    }
}

B::test();

输出结果为

B -> B

可以得出:

self  代表自身,当前类,类内指针

static 父类中访问子类的方法


再举个例子 static

<?php    
class A {
    public static function hi() {
        echo __CLASS__,' -> A';
    }
    public static function test() {
        // self::hi(); // 调用当前A类 A::hi(); 输出 A -> A
    	// static::hi(); // 调用子B类  B::hi()覆盖了A::hi(); 输出 B -> B
    	static::child(); // 调用子B类  B::child()
    	// self::child(); // Fatal error: Call to undefined method A::child()
    }
}

class B extends A {
    public static function hi() {
        echo __CLASS__,' -> B';
    }
    public static function child() {
        echo 'child';
    }
}

B::test();

输出:

child

A中

static::child();

调用了存在B中

public static function child()
<< 上一篇 CentOS 6.X 关闭不需要的 TTY 方法 Yii2 安装与配置 下一篇 >>
文章标签
随意 | Created At 2014 By William Clinton | 蜀ICP备14002619号-4 |