Изменить:
* Примечание: я использую PHP 5.2 в настоящее время, к сожалению. Я не могу найти приличного дешевого хозяина, предлагающего 5.3 ...
В PHP self
относится к классу, в котором определяется вызываемый метод. Это означает, что если вы не переопределите метод в дочернем классе, ключевое слово self
будет ссылаться на родительский класс, даже когда вызывается из дочернего класса.
Например, этот код:
<?php
class ParentClass {
const NAME = "ParentClass";
public function showName() {
echo self::NAME . "<br />\n";
}
}
class ChildClass extends ParentClass {
const NAME = "ChildClass";
public function __construct() {
echo self::NAME . "<br />\n";
}
}
$test = new ChildClass();
$test->showName();
?>
Создаст этот вывод:
ChildClass
ParentClass
Я хочу создать метод по умолчанию (например, showName()
в приведенном выше примере), который существует в родительском классе с константами, определяющими значения по умолчанию для использования. В дочернем я хочу иметь возможность переопределить эти константы (обратите внимание на const
в дочернем определении выше), и чтобы эти значения использовались при вызове метода в экземпляре дочернего объекта.
Короче говоря, как я могу сделать так, чтобы результат вышеприведенного образца был ...
ChildClass
ChildClass
... без дублирования кода родителя внутри ребенка?