Почему я могу назвать константу класса из динамической декларации? Этот код работает хорошо:
echo $this::CONST;
Разве это не так?
Почему я могу назвать константу класса из динамической декларации? Этот код работает хорошо:
echo $this::CONST;
Разве это не так?
От http://php.net/manual/en/language.oop5.constants.php
<?php
class MyClass
{
const CONSTANT = 'constant value';
function showConstant() {
echo self::CONSTANT . "\n";
}
}
echo MyClass::CONSTANT . "\n";
$classname = "MyClass";
echo $classname::CONSTANT . "\n"; // As of PHP 5.3.0
$class = new MyClass();
$class->showConstant();
echo $class::CONSTANT."\n"; // As of PHP 5.3.0
?>
Вызов константы из динамической декларации работает точно так же, как вызов его из класса
Я знаю это)) Но вызов константы из динамического environmentis действительно прав?) – derrs
Константа - это просто значение, которое не изменится внутри объявления класса, поэтому каждый экземпляр этого класса будет иметь эту константу с ее значением. Нет проблем с вызовом его из экземпляра :) – tomiy
не проблема. Проблема в дизайне кода. Я нашел $ this :: CONST в одном коде разработчика и улыбнулся)) Я думаю, это уродливо) , потому что я использовал дизайн кода, как в руководствах, но не так, как мне нравится – derrs
почему это так? константа может быть доступна во многих отношениях. Это один из них. см. http://stackoverflow.com/questions/7506530/accessing-a-class-constant-using-a-simple-variable-which-contains-the-name-of-th – Drudge
Вы смешиваете константы с частными переменными как кажется –