Leere Seite, wenn ich deklariere (strict_types = 1); in PHP 7 oben in der Datei

8

Vor kurzem habe ich PHP 7 getestet, insbesondere die Rückgabetypdeklaration und Typhinweis . Ich habe PHP 7 aus der Quelle (Master-Zweig von Github ) kompiliert und in der virtuellen Box Ubuntu 14.04 ausgeführt. Ich habe versucht, folgenden Code auszuführen, um einen Test für neue Ausnahmen zu erhalten. Aber es gab eine leere Seite.

%Vor%

Dann merke ich, dass ich den Fehler einstellen muss, um auf dem Bildschirm angezeigt zu werden. Also habe ich altmodisch ini_set('display_errors', 1); wie unten hinzugefügt,

%Vor%

das gab mir folgende TypeError wie erwartet nach dieser Throwable Schnittstelle RFC

  

Fataler Fehler: Uncaught TypeError: Rückgabewert von test () muss der sein   Geben Sie string ein, das Array wurde in /usr/share/nginx/html/test.php online zurückgegeben   7 in /usr/share/nginx/html/test.php:7 Stapelspur: # 0   /usr/share/nginx/html/test.php(10): test () # 1 {main} geworfen   /usr/share/nginx/html/test.php in Zeile 7

Digging weiter Ich habe declare(strict_types=1); oben wie unten hinzugefügt,

%Vor%

und bang, der Fehler ist einfach verschwunden und hat mich mit der leeren Seite verlassen. Ich kann nicht herausfinden, warum es mir eine leere Seite gibt?

    
pinkal vansia 19.07.2015, 12:30
quelle

2 Antworten

15

Nachdem ich die Google und RFCs durchsucht hatte, kam ich zu folgendem Satz in RFC ,

  

Dieser RFC schlägt außerdem das Hinzufügen einer neuen optionalen pro-Datei vor   Direktive, deklarieren (strict_types = 1) ;, die alle Funktionsaufrufe durchführt   und Rückgabebefehle innerhalb einer Datei haben eine "strikte" Typüberprüfung   Skalar-Typ-Deklarationen, einschließlich für Erweiterung und integriertes PHP   Funktionen.

Das bedeutet, dass mit Direktive declare(strict_types=1) nichts falsch ist, aber das Problem war, wie ich ini_set() function aufgerufen habe. Er erwartet, dass der zweite Parameter vom Typ string ist.

%Vor%

Ich habe stattdessen int übergeben, und daher konnte die Einstellung, die zur Anzeige von Fehlern benötigt wird, nicht gesetzt werden und daher wurde ich getroffen mit einer leeren Seite von PHP strict mode. Ich habe dann den Code ein bisschen geändert und die Zeichenfolge "1" wie unten übergeben und es hat funktioniert.

%Vor%     
pinkal vansia 19.07.2015, 12:30
quelle
0

Der Fehler sagt aus, dass Ihre Funktion erwartet, dass Sie einen String zurückgeben, aber stattdessen geben Sie ein Array zurück! Und Funktion klagt, was normal ist. Also gib bei deiner Rückkehr einfach einen String-Wert ein. Das ist es!

    
Santoni 06.07.2016 08:29
quelle

Tags und Links