Search code examples
phpoopinheritancestaticstatic-binding

how to use an static var from child class in its parent class with an static method


I want to get the value of the static var that was redeclared in the subclass :

    class A {

        private static $echo_var = 'PARENT_ECHO' ;

        public static function e() {
            return '$echo_var = ' . self::$echo_var ;
        }
    }

    class B extends A {

        private static $echo_var = 'CHILD_ECHO';
    }

    echo B::e();

I want to get CHILD_ECHO.

thanks, Mottenmann


Solution

  • Use the static keyword when accesing it:

    return '$echo_var = ' . static::$echo_var ;
    

    It's called late static binding. But it won't work on private members. You'll have to make it public or protected. Private properties are accessible only in the class in which they are defined.