phpbar.de logo

Mailinglisten-Archive

[php] Warum nicht: $bar = (3 == $foo) ? &$foo : &$foo ?

[php] Warum nicht: $bar = (3 == $foo) ? &$foo : &$foo ?

Matthias Stolt matthias_(at)_stolt.de
Tue, 12 Dec 2000 00:22:04 +0100


On Mon, 11 Dec 2000 23:21:38 +0100, Ulf Wendel wrote:

>> > warum muß ich statt $bar = (3 == $foo) ? &$foo : &$foo die Langform mit
>Ich wundere mich über den Parse Error, des
>Originals. Der bedingte Ausdruck scheint nicht im Zusammenhang mit
>Referenzen erlaubt. Warum ist das so?

Ist nicht die Runtime-Referenz ein auslaufendes Feature?
In der php.ini-dist findet sich folgender Eintrag.

allow_call_time_pass_reference= On	; whether to enable the ability to force arguments to be 
										; passed by reference at function-call time.  This method
										; is deprecated, and is likely to be unsupported in future
										; versions of PHP/Zend.  The encouraged method of specifying
										; which arguments should be passed by reference is in the
										; function declaration.  You're encouraged to try and
										; turn this option Off, and make sure your scripts work
										; properly with it, to ensure they will work with future
										; versions of the language (you will receive a warning
										; each time you use this feature, and the argument will
										; be passed by value instead of by reference).

Wenn ich jetzt den Operator '?' anschaue, dann kann er durchaus als ein Funktionsaufruf mit drei Parametern gesehen werden.
Sozusagen questionmark($bool,$wert1,$wert2).
Und dann ist der bemängelte Ausdruck mit questionmark($bool,&$wert1,&$wert2)  zu betrachten, was eine call_time_pass_reference wäre, oder?
By the way, in meiner Version 4.03pl1 ist der Ausdruck ebenfalls nicht auswertbar. Leider weder mit noch ohne allow_call_time_pass_reference,
was gegen meine Theorie spricht. 

So viel dazu 
  Matthias






php::bar PHP Wiki   -   Listenarchive