Christian Seiler: Kurze Frage zu Funktion Aliases

Beitrag lesen

Hallo Tom,

<?php   ### reference.php ###

function show_string()
{
  echo "<p>Hallo text</p>";
}
#--------------------------------------

$text =& show_string();
$text;
?>

Das funktioniert nur scheinbar, aber nicht wirklich. Beweis:

<?php   ### reference.php ###

function show_string()
{
  echo "<p>Hallo text</p>";
}
#--------------------------------------

$text =& show_string();
$text;
$text;
?>

Nach Deiner Logik müsste es den Text zweimal ausgeben. Tut es aber nicht. Die Ausgabe erfolgt nämlich schon in der Zeile

$text =& show_string();

Die Zeile "$text;" macht gar nichts mehr, weil $text eine Referenz auf eine Variable mit dem Inhalt NULL ist. Außerdem sind solche Konstrukte böse, da show_string nicht explizit eine lokale Variable zurückliefert, von der eine Referenz gebildet werden kann, PHP 5 wird bei so einer Konstruktion aus dem Grund sogar einen Fehler liefern, wenn ich mich richtig erinnere.

Korrekt wäre in PHP:

<?php   ### reference.php ###

function show_string()
{
  echo "<p>Hallo text</p>";
}
$text = 'show_string';
$text ();
?>

PHP verhält sich - weil es eine Scriptsprache ist - eben anders, als einige andere Sprachen, wie beispielsweise C.

Viele Grüße,
Christian