2009-03-04 8 views
0

Hier ist ein Teil meines CodesWarum wird eine definierte Konstante innerhalb einer Klassenkonstante angegeben, die einen Fehler verursacht?

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

class Questions 
    { 


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

scheint, wenn ich nehme die define() Konstante Erklärung aus meiner Klasse konstant ‚d, es funktioniert gut. Aber wenn ich es hinzufügen, wirft es diesen Fehler:

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

Wie kann ich meine define() ‚dort konstant d? Ich nehme an, es ist nicht korrekt nachschlagen DIR_APP denken, es könnte innerhalb der Klasse definiert werden. Wie bekomme ich es, um es global zu lösen?

Vielen Dank

Antwort

4

Es kann nicht getan werden.

Zitat von 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"

Ich denke, man könnte

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

aber das ist global.

+0

Das saugt ... so bin ich links mit globalen Definitionen oder normalen Variablen? Hat jemand anderes in dieses Problem schon einmal aufgetreten? – alex

+0

Ich bin neu in PHP, aber ich denke, eine Konstante als ein Klassenmitglied ist das gleiche im Speicher verwenden als Sie können sehen, ob dies der Fall ist, indem Sie die Speichererhöhung messen, wenn Sie alle Klassen außerhalb der Klasse def definieren und diese in der Klasse definieren, bevor Sie sie instanziieren. – Spikolynn

0

Nie zuvor so versucht. Zend Studio gibt mir im Moment ein Problem, um es mir selbst anzusehen. Wie wäre es aber mit diesem Versuch ...

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

Es erstickt an der Klammer :( – alex

+0

Gah! Welche PHP-Version laufen Sie? –

+0

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

Verwandte Themen