Как получить доступ постоянный определенный в дочернем классе от функций родительского класса?

Я видел этот пример из 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 (родительский класс) должна использовать константу. Какая-либо идея?

33
задан datasn.io 12 March 2010 в 03:35
поделиться

2 ответа

Мне не удалось заставить его работать с 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'

?>
0
ответ дан 27 November 2019 в 17:33
поделиться

Вместо

$c = get_class( $this );
echo $c::MY_CONST;

Сделайте это

$c = get_class( $this );
echo constant($c . '::MY_CONST');
4
ответ дан 27 November 2019 в 17:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: