2013-03-25 3 views
0

Есть ли способ определить константу внутри функции класса?
Пример:Определение константы класса PHP в функции

class ExampleApp 
{ 
    const FORM = TRUE; 

    public function __construct() 
    { 
     switch(Base::color()) 
     { 
      case 'green': 
       self::FORM = 'G'; 
       break; 
      case 'red': 
       self::FORM = 'R'; 
       break; 
      default: 
       self::FORM = 'W'; 
       break; 
     } 
    } 

    public function process() { return TRUE; } 
} 


Приведенный выше пример кода не будет работать, очевидно!

Из моего знания программирования вы не можете переопределить константы, иначе они будут «константами». Но как вы определяете costant внутри функции ?! В моем примере эта функция является конструктором, или это совершенно невозможно?

+0

Вы можете использовать 'define' объявить константу во время выполнения вместо синтаксического анализа времени. Я бы просто использовал переменную и обещал не изменять ее. –

+0

Похоже, что существует некоторая путаница в отношении 'constant' versus' static' – Motes

ответ

5

Сохраняя его в собственность. НЕ статическое свойство, просто свойство с геттерами и сеттерами.

Тогда вы можете получить форму цвета, вызвав его с $example_app->getFormColor();

7

Я думаю, что вы хотите статическое свойство, а не постоянное

public static $form = true;

Однако, не помещайте имя переменной заглавными буквами, то, так как это не является постоянной величиной, не путать с другими разработчиками.

Вы можете asccess его, как вы делали в своих методах с self::form

+0

-> Ответ: Я полагаю, что решение должно состоять в использовании «статической» переменной (не поистине постоянной, а ведет себя как одна) внутри функции или просто нормального константа using define(). – tfont

+0

Это действительно зависит от того, что вы хотите сделать, но в любом случае, я думаю, вам нужно то, что @Hayden предложил в своем ответе, или мой ответ со статическим свойством. –

+1

При доступе к 'static' необходимо добавить знак доллара. Правильный способ доступа к свойству '$ form' будет' self :: $ form'. –

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