2009-03-04 2 views
0

Вот часть моего кодаЗачем задавать определенную константу внутри константы класса, вызывая ошибку?

define('DIR_APP', 'app/'); 

class Questions 
    { 


     const QUESTIONS_FILE = DIR_APP . 'questions.xml'; 
    } 

Кажется, когда я беру define() «d константа из моего класса постоянной декларации, она отлично работает. Но когда я добавляю его он бросает эту ошибку:

Parse error: syntax error, unexpected '.', expecting ',' or ';' in /home/public_html/app/classes/Questions.class.php on line 7 

Так как я могу получить мой define() «D константа там? Я предполагаю, что он неправильно просматривает DIR_APP, думая, что он может быть определен внутри класса. Как мне заставить его разрешить его глобально?

Спасибо

ответ

4

Нельзя делать.

http://www.php.net/manual/en/language.oop5.constants.php Цитата:

"The value must be a constant expression, not (for example) a variable, a class member, result of a mathematical operation or a function call"

Я думаю, вы могли бы

define('QUESTIONS_FILE', DIR_APP . 'questions.xml');

но носит глобальный характер.

+0

Это отстой ... так что я остался с глобальными определениями или нормальными переменными? Кто-нибудь еще сталкивался с этой проблемой раньше? – alex

+0

Я новичок в php, но я предполагаю, что наличие константы как члена класса одинаково для использования в памяти вы можете увидеть, если это так, измеряя увеличение памяти, когда вы определяете все consts вне класса def и определяете их в классе, прежде чем создавать его. – Spikolynn

0

Никогда не пробовал это раньше. На данный момент Zend Studio дает мне проблему, чтобы посмотреть на нее сам. Как насчет пробовать это, хотя ...

const QUESTIONS_FILE = constant("DIR_APP") . 'questions.xml'; 
+0

Это забилось в скобках :( – alex

+0

Gah! Какая версия PHP вы используете? –

+0

php 5 ......................... – alex

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