PHP-Rückgabetyp

8

Ist es möglich, den Rückgabetyp so zu definieren?

%Vor%     
Gerep 24.02.2011, 12:20
quelle

10 Antworten

4

Wie auf dieser Seite: Ссылка

Sie können es versuchen,

%Vor%

Jetzt bietet PHP eine Rückgabetypdeklaration von PHP 7. Ich habe erläutert, wie Sie den Rückgabetyp verwenden PHP

    
DhruvPathak 24.02.2011, 12:23
quelle
17

Da diese Frage immer noch in den wichtigsten Google-Ergebnissen auftaucht, finden Sie hier eine aktuelle Antwort:

Tatsächlich hat PHP 7 richtige Rückgabetypen für Funktionen / Methoden eingeführt gemäß diesem RFC .

Hier ist das Beispiel aus dem oben verlinkten Handbuch:

%Vor%

Oder in einer allgemeineren Notation:

%Vor%

Wenn die zurückgegebene Variable oder der zurückgegebene Wert nicht mit dem Rückgabetyp übereinstimmt, konvertiert PHP diesen implizit in diesen Typ. Alternativ können Sie strikte Typisierung für die Datei über% aktivieren. co_de%, in diesem Fall führt ein Typenkonflikt zu einer TypeError-Ausnahme .

Einfach so. Beachten Sie jedoch, dass Sie sicherstellen müssen, dass PHP 7 sowohl auf Ihrem Entwicklungs- als auch auf Ihrem Produktionsserver verfügbar ist.

    
domsson 16.08.2016 09:08
quelle
15

Es ist nicht möglich, den Rückgabetyp auf Methoden- / Funktionsebene explizit zu definieren. Wie angegeben, können Sie die Rückkehr einwerfen, also zum Beispiel ...

%Vor%

Alternativ können Sie einen Kommentar in der phpDoc-Syntax hinzufügen, und viele IDEs nehmen den Typ aus einer Typvervollständigungsperspektive auf.

%Vor%     
Jeff Parker 24.02.2011 12:26
quelle
3

Rückgabetyp hinzugefügt in PHP 7;)

Ссылка

    
Adil Ilhan 04.02.2015 18:49
quelle
2

wirke wie

%Vor%     
Haim Evgi 24.02.2011 12:23
quelle
1

Momentan, in PHP 5 oder niedriger, können Sie im Funktionszeichen type, aber nicht im Rückgabewert definieren. Strenge Deklarationen sind bei PHP ver. 6 und darüber, sind aber noch nicht implementiert.

Vielleicht kannst du das mit ein paar Tricks tun, wie das Casting, bevor du den Wert zurückbringst ...

    
Achilleterzo 24.02.2011 12:32
quelle
1

Eine weitere Möglichkeit, um sicherzustellen, dass Überschreibungen den Rückgabetyp nicht ändern, ist etwa Folgendes:

%Vor%

Dadurch können Sie Klassen erlauben, die von Ihrer Klasse erben, die Funktionalität in OnTest zu ändern, aber sicherstellen, dass Test einen Bool-Wert zurückgibt.

    
jmblackmer 29.12.2011 14:45
quelle
1

Seit der Veröffentlichung von PHP7 haben sie nun Rückgabetyp eingeführt Erklärungen zu PHP.

Sie definieren den Rückgabetyp, indem Sie : type anhängen, wenn Sie die Funktion definieren:

%Vor%

Standard Schwachmodus

Standardmäßig verwendet PHP den schwachen Modus. Die Dokumentation erklärt es auf folgende Weise:

  

Im Standardschwachen Modus werden zurückgegebene Werte zum richtigen Typ gezwungen, wenn sie nicht bereits von diesem Typ sind

Sehen Sie sich beispielsweise das folgende Beispiel an, in dem die Funktion string zurückgibt, obwohl der definierte Rückgabetyp int

ist %Vor%

Starker / Strenger Modus

Sie können PHP auch anweisen, bei der Behandlung von Rückgabetypen den strict / strong-Modus zu aktivieren, indem Sie declare(strict_types=1) setzen. Was das bedeutet ist, dass PHP eine TypeError wirft, wenn eine Funktion den falschen Typ zurückgibt. Die PHP-Dokumentation erklärt es auf folgende Weise:

  

Im starken Modus muss der zurückgegebene Wert vom richtigen Typ sein, andernfalls wird ein TypeError ausgelöst.

%Vor%     
Marcus Lind 29.03.2017 04:17
quelle
0

PHP lässt Sie das nicht, stattdessen können Sie das tun:

%Vor%

Nach meinem Wissen können Sie keine Schnittstelle verwenden, um einen Rückgabetyp zu erzwingen

    
Jason 24.02.2011 12:24
quelle
0

Wenn Sie wissen, dass der Typ des zurückgegebenen Werts bool ist, dann ist es sinnlos, ihn in die Funktion zu übernehmen.

Es gibt keine Möglichkeit, den Rückgabetyp einer Funktion innerhalb von PHP zu definieren, da sie lose typisiert ist. Sie müssen Ihre Validierung innerhalb der aufrufenden Funktion durchführen.

    
James Booker 24.02.2011 12:26
quelle

Tags und Links