2016-03-01 19 views
0

Почему я могу назвать константу класса из динамической декларации? Этот код работает хорошо:

echo $this::CONST; 

Разве это не так?

+0

почему это так? константа может быть доступна во многих отношениях. Это один из них. см. http://stackoverflow.com/questions/7506530/accessing-a-class-constant-using-a-simple-variable-which-contains-the-name-of-th – Drudge

+0

Вы смешиваете константы с частными переменными как кажется –

ответ

0

От 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 
?> 

Вызов константы из динамической декларации работает точно так же, как вызов его из класса

+0

Я знаю это)) Но вызов константы из динамического environmentis действительно прав?) – derrs

+0

Константа - это просто значение, которое не изменится внутри объявления класса, поэтому каждый экземпляр этого класса будет иметь эту константу с ее значением. Нет проблем с вызовом его из экземпляра :) – tomiy

+0

не проблема. Проблема в дизайне кода. Я нашел $ this :: CONST в одном коде разработчика и улыбнулся)) Я думаю, это уродливо) , потому что я использовал дизайн кода, как в руководствах, но не так, как мне нравится – derrs

Смежные вопросы