Kurze Frage zu Funktion Aliases
shev
- php
Hi,
meine .bashrc erlaubt simpel aliases zu setzen für Funktionen.
zBsp:
function foo
alias faa=foo
Ich mach das um meinem schlechten Gedächtnis zu helfen wie manche meiner Funktionen heissen, die ich nicht so oft anwende, bzw erst wieder in einem halben Jahr oder so brauche. ;)
Geht das auch in PHP, das ich meiner Funktion zusätzlich andere Namen zuweisen (eben quasi darauf zeige/pointe), vielleicht mittels define oder ähnlichem?
Danke im vorraus für Info!
Hello,
Geht das auch in PHP, das ich meiner Funktion zusätzlich andere Namen zuweisen (eben quasi darauf zeige/pointe), vielleicht mittels define oder ähnlichem?
Das geht jedenfalls genauso, wie in einer "normalen" Hochsprache:
<?php ### reference.php ###
function show_string()
{
echo "<p>Hallo text</p>";
}
#--------------------------------------
$text =& show_string();
$text;
?>
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hello,
man kann natürlich auch beliebige Wrapper aufbauen:
<?php ### reference.php ###
function show_string($text)
{
echo "<p>Hallo: $text</p>";
}
#--------------------------------------
function ss($t)
{
show_text($t);
}
#======================================
show_text('diese funktioniert');
ss('und das geht auch');
?>
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
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
Hello Christian,
vielen dank fürs Mitlesen und Aufpassen!
$text =& show_string();
Das funktioniert nur scheinbar, aber nicht wirklich. Beweis:
[...]
das war eine Ausflug in die frühe Objektorientierung...
Und so eröffnet das ja ganz neue Möglichkeiten:
<?php ### reference_richtig.php ###
function show_string($arg)
{
echo "<p>Hallo $arg</p>";
}
#-------------------------------
$text = 'show_string';
$text ('so gehts richtig');
$text ('und sogar zweimal');
$_func = array();
$_func[1] = 'show_string';
$_func[1]('auch mit Arrays?');
$_func[1]('sogar mit Arrays!');
?>
Ich hoffe, dass da jetzt nicht acuh noch ein Haken drinsteckt.
Ich bin eben doch noch Pascal-geschädift.
Da waren "Array of function" immer meine Lieblingsspielzeuge.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Und immer wieder dank für die Hilfe!
Habs nochmals getested, mit der erst genannten Methode gabs das Problem, das es prozessiert wurde, bevor irgend etwas anderes gemacht wurde (php 5)
Die andere Methode (von Christian, und dann deine Beispiele) funktionieren perfekt!
Hello,
Habs nochmals getested, mit der erst genannten Methode gabs das Problem, das es prozessiert wurde, bevor irgend etwas anderes gemacht wurde (php 5)
Ja, der erste war von mir vorhin auch nur ein Schnellschuss like Pascal...
Hat mich ja selbst gewundert, dass das scheinbar funktionierte.
Die andere Methode (von Christian, und dann deine Beispiele) funktionieren perfekt!
Das mit dem Array of Function finde ich selber ganz interessant.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom