<?php
class Base {
protected static $c = 'base';
public static function getC() {
return self::$c;
}
}
class Derived extends Base {
protected static $c = 'derived';
}
echo Base::getC(); // output "base"
echo Derived::getC(); // output "base", but I need "derived" here!
?>
So what’s the best workaround?
The best way to solve this is to upgrade to PHP 5.3, where late static bindings are available. If that’s not an option, you’ll unfortunately have to redesign your class.