Vorgabewert für Funktionsparamter
Tom
- php
0 Felix Riesterer0 Tom
0 dedlfix
Hello,
ich habe mit da ein "Ei" gelegt...
Die Idee war, den Separator-Parameter auch während der Laufzeit ändern zu können, was ja mit einer Konstanten nicht ginge
function make_view($filename, $target, $page=1, $sep=$_gb['data']['sep'])
{
...
}
Nun darf man aber für Vorgabewerte keine Referenzen benutzen.
Wie löse ich das Problem denn nun am besten auf?
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Lieber Tom,
function make_view($filename, $target, $page=1, $sep=$_gb['data']['sep'])
Nun darf man aber für Vorgabewerte keine Referenzen benutzen.
Verstehe ich Dich richtig, dass in der Klammer Deiner Funktion keine Wertzuweisungen stehen dürfen?
Dann müsste tatsächlich der Funktionsaufruf Deine Werte schon vorbelegen...
Andererseits, woher kennt Deine Funktion den Inhalt der Variablen $_gb?
Ich verstehe nicht wirklich Dein konkretes Problem...
Liebe Grüße aus Ellwangen,
Felix Riesterer.
Hello,
function make_view($filename, $target, $page=1, $sep=$_gb['data']['sep'])
Nun darf man aber für Vorgabewerte keine Referenzen benutzen.
Verstehe ich Dich richtig, dass in der Klammer Deiner Funktion keine Wertzuweisungen stehen dürfen?
Doch, Wertzuweisungen dürfen dort stehen, aber es dürfen nur Konstanten sein.
Das stammt wohl noch aus den Beschränkungen der Hochsprache, die hierfür ja schließlich Platz auf dem Stack bereithalten müsste. Aber PHP hätte das eigentlich schon auflösen können :-((
Dann müsste tatsächlich der Funktionsaufruf Deine Werte schon vorbelegen...
Andererseits, woher kennt Deine Funktion den Inhalt der Variablen $_gb?
Die wird selbstverständlich in der Define- bzw. Include-Section meiner Scripte belegt.
Ich verstehe nicht wirklich Dein konkretes Problem...
Dann lies nochmal:
"Nun darf man aber für Vorgabewerte keine Referenzen benutzen."
Es müssen Konstanten sein, deren Referenzen vom Pre-Parser-Lauf vollständig aufgelöst werden können.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Die Idee war, den Separator-Parameter auch während der Laufzeit ändern zu können, was ja mit einer Konstanten nicht ginge
function make_view($filename, $target, $page=1, $sep=$_gb['data']['sep'])
{
...
}Nun darf man aber für Vorgabewerte keine Referenzen benutzen.
Das hat ja nichts mit dürfen sondern schlicht mit "geht nicht" zu tun. Die Variable $_gb ist innerhalb der Funktion ja nicht bekannt, solange kein global sie dort bekannt gibt.
Wie löse ich das Problem denn nun am besten auf?
Setze als Vorgabewert für $sep beispielsweise null. Teste darauf und weise ihr dann einen global eingestellten Wert zu.
Das ist zwar alles andere als hübsch, aber wenn du den Wert partout nicht jedesmal beim Funktionsaufruf übergeben willst, ...
Eine andere Möglichkeit wäre noch, den Wert von $sep, wenn er nicht null ist, in einer statischen Variablen festzuhalten.