В PHP, если статический атрибут определен в родительском классе, он не может быть переопределен в дочернем классе. Но мне интересно, есть ли способ обойти это.
Я пытаюсь написать оболочку для кого-то другого (несколько неуклюжей) функции. Эта функция может применяться к множеству разных типов данных, но для каждого из них требуются разные флаги и опции. Но 99% времени, по умолчанию для каждого типа было бы достаточно.
Было бы неплохо, если бы это можно было сделать с наследованием, без необходимости писать новые функции каждый раз. Например:
class Foo {
public static $default = 'DEFAULT';
public static function doSomething ($param = FALSE ) {
$param = ($param === FALSE) ? self::$default : $param;
return $param;
}
}
class Bar extends Foo {
public static $default = 'NEW DEFAULT FOR CHILD CLASS';
}
echo Foo::doSomething() . "\n";
// echoes 'DEFAULT'
echo Bar::doSomething() . "\n";
// echoes 'DEFAULT' not 'NEW DEFAULT FOR CHILD CLASS'
// because it references $default in the parent class :(