How to access constant defined in child class from parent class functions?

后端 未结 5 1573
时光说笑
时光说笑 2021-02-03 18:37

I saw this example from php.net:



        
5条回答
  •  隐瞒了意图╮
    2021-02-03 18:55

    Since php 5.3:

    Use static::MY_CONST


    More details on static

    In this case the keyword static is a reference to the actually called class.

    This illustrates the difference between static $var, static::$var and self::$var:

    class Base {
        const VALUE = 'base';
    
        static function testSelf() {
            // Output is always 'base', because `self::` is always class Base
            return self::VALUE;
        }
    
        static function testStatic() {
            // Output is variable: `static::` is a reference to the called class.
            return static::VALUE;
        }
    }
    
    class Child extends Base {
        const VALUE = 'child';
    }
    
    echo Base::testStatic();  // output: base
    echo Base::testSelf();    // output: base
    
    echo Child::testStatic(); // output: child
    echo Child::testSelf();   // output: base
    

    Also note that the keyword static has 2 quite different meanings:

    class StaticDemo {
        static function demo() {
            // Type 1: `static` defines a static variable.
            static $Var = 'bar';
    
            // Type 2: `static::` is a reference to the called class.
            return static::VALUE;
        }
    }
    

提交回复
热议问题