Der Martin: PHP konfigurieren

Beitrag lesen

Hi,

if(test) echo "test existiert";
ich kann beim besten Willen nicht nachvollziehen, warum dieser Ausdruck wahr sein sollte.. aber gut. Ich muss das Konzept verstehen.

Ein Bezeichner ohne Dollarzeichen davor und ohne Funktionsklammer hintendran wird als Konstante betrachtet. Konstanten kann man mit define() definieren - wer hätte das gedacht?

Ich kann dir nicht folgen. test (ohne Dollar) ist nicht deklariert. test existiert nicht. if(test) kann deshalb meines Erachtens nicht wahr sein.

Doch, denn hier greift eine Pseudo-Intelligenz von PHP ein, die sich auch in der Notice ausdrückt:

PHP Notice:  Use of undefined constant test - assumed 'test' in php shell code on line 1

PHP stellt fest, dass die benannte Konstante test nicht existiert und nimmt deshalb an, du hättest stattdessen den String 'test' gemeint. Nach der internen Fehlerkorrektur lautet der Ausdruck also if ('text'), und der ergibt true. Das muss man nicht gut finden, aber wohl akzeptieren.

Es geht um den Fall, dass der Entwickler vor der Variable test das bei PHP nötige $ vergessen hat. Ich finde das keinen ungewöhnlichen Eingabefehler, zumindest für Leute, die von anderen Sprachen kommen.

Völlig richtig, deswegen sollte man solche Notices auch ernst nehmen und sie während der Entwicklungs- und Testphase auch immer anzeigen lassen.

Aber egal, ich verstehe das Konzept jetzt.

Wirklich? ;-)

Ciao,
 Martin

--
Die letzten Worte des stotternden Beifahrers:
Frei... frei... frei... freilich kommt da was!!
Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(