Я видел этот пример из php.net:
<?php
class MyClass {
const MY_CONST = "yonder";
public function __construct() {
$c = get_class( $this );
echo $c::MY_CONST;
}
}
class ChildClass extends MyClass {
const MY_CONST = "bar";
}
$x = new ChildClass(); // prints 'bar'
$y = new MyClass(); // prints 'yonder'
?>
Но $c:: MY_CONST только распознан в версии 5.3.0 или позже. Класс, который я пишу, может быть распределен много.
В основном я определил константу в ChildClass, и одна из функций в MyClass (родительский класс) должна использовать константу. Какая-либо идея?
Мне не удалось заставить его работать с const, так как он печатает "yonderyonder" (в том-то и дело о константах, они не меняются), но он отлично работает с var:
<?php
class MyClass {
var $MY_CONST = "yonder";
public function __construct() {
echo $this->MY_CONST;
}
}
class ChildClass extends MyClass {
var $MY_CONST = "bar";
}
$x = new ChildClass(); // prints 'bar'
$y = new MyClass(); // prints 'yonder'
?>
Вместо
$c = get_class( $this );
echo $c::MY_CONST;
Сделайте это
$c = get_class( $this );
echo constant($c . '::MY_CONST');