Parent static function calling static child variable
Here's a simplfied version of the classes I'm dealing with
class A {
   static protected function getVal() {
              return self::$valB;
            }
}
class B extend A {
   static protected $valB = 'Hello';
开发者_运维百科}
B::getVal(); // Hello
Should this work in php version 5.2.17 or do I have it setup wrong. I'm currently getting an error saying that it can't find A::$valB.
Requires late static binding, which is present in PHP 5.3.0 and later.
http://us3.php.net/manual/en/language.oop5.late-static-bindings.php
In getVal, you'd want to use return static::valB; instead of return self::valB;
First, your code syntax is wrong. Start by fixing it:
class A {
   static protected function getVal() {
       return self::$valB;
   }
}
class B extends A {
   static protected $valB = 'Hello';
}
B::getVal();
Now, this will never work because getVal is protected. Unless you call it from A or one of its child, it won't work.
The self keyword resolves to the class that calls it. Since self is used in A: self == A.
You will need to use late static bindings to fix it:
return static::$valB;
Lastly, I'd recommend you also declare $valB in A to avoid fatal errors:
class A {
    static protected $valB;
    static protected function getVal() { ... }
}
 加载中,请稍侯......
      
精彩评论