2016-11-02 2 views
0

Ich verbrachte viel Zeit, um dieses Problem in der Produktionsumgebung herauszufinden. In der QA-, UAT- und DEV-Umgebung funktioniert das gut. Es scheint, dass etwas mit dem Server zu tun hat. Unten sind die Details, die ich gemacht habe.Warum erhält der letzte Parameter einer Funktion nicht seinen Wert?

Ich habe auf mehr Feld zu einer vorhandenen Funktion mit Standardwert hinzugefügt und mit NULL und "" als Standardwert getestet.

public function test($a, $b, $c = '') 
    public function test($a, $b, $c = NULL) 

Wenn ich diese Funktion aufrufen, erhält das letzte Argument seinen Wert nicht. Wenn ich die Argumente in der Protokolldatei drucke, erhalte ich den Standardwert für den letzten Parameter, d. H. NULL anstelle des tatsächlichen Werts. Ich verwende Zend-Framework 1.

Unten ist der Code, um die Argumente in die Protokolldatei zu schreiben. Ich habe unterhalb der Zeile am Anfang der Funktion hinzugefügt.

 $arg_list = func_get_args(); 
    Sg_Log_Manager::info(print_r($arg_list , true)); 

Kann mir jemand helfen?

+0

Sie müssen zeigen, wie Sie die Funktionen aufrufen ... –

Antwort

1

Zuerst erwähnen Sie in Ihrer Beschreibung einen Standardwert von NULL, aber in Ihrem Quellcode haben Sie den Standardwert der leeren Zeichenfolge ''. Das ist etwas anderes!

Die Dokumentation für func_get_args() Zustände:

Diese Funktion gibt eine Kopie der übergebenen Argumente nur, und berücksichtigt nicht standardmäßig (nicht bestanden) Argumente.

+0

, aber ich gebe alle Parameter mit hart codierten beim Aufruf der Testfunktion. – user3744825

+0

Danke für Ihre schnelle Antwort, aber ich habe gerade mit NULL-Wert und leere Zeichenfolge '' getestet und funktioniert nicht – user3744825

Verwandte Themen