2009-09-07 6 views
15

Was ist die richtige Syntax für mich die Rückgabetypen Hinweise für eine Methode angeben?PHP Geben Sie die Rückgabetyp Hints für eine Methode

Zum Beispiel, ich habe ein solches Verfahren:

private static function ConstructPDOObject($dbname) 
{ 
     $hostname =self::HOSTNAME; 
     $username = self::USERNAME; 
     $password = self::PASSWORD; 
     $dbh = new PDO("mysql:host=$hostname;dbname=$dbname", $username, $password); 
     return $dbh; 
} 

Und ich will, wann immer ich die obige Methode aufrufen, zeigt die IDE mir die Methoden für die PDO.

Wie wird der Typhinweis hinzugefügt?

Antwort

23

Innerhalb Aptana, PDT, Zend Studio und anderen IDE können Sie Type Hinting zu php Methoden wie folgt hinzufügen:

/** 
* Constructs a new PDO Object and returns it 
* 
* @param string $dbname name of the database to connect to 
* @return PDO connection to the database 
*/ 
private static function ConstructPDOObject($dbname) 
{ 
     $hostname =self::HOSTNAME; 
     $username = self::USERNAME; 
     $password = self::PASSWORD; 
     $dbh = new PDO("mysql:host=$hostname;dbname=$dbname", $username, $password); 
     return $dbh; 
} 

Der Klassenname nach dem @return Attribut des Dokumentationsblock gesetzt wird, um anzuzeigen, der Rückgabetyp der Methode Z.B. Im Fall Ihrer Beispielmethode ist PDO der Klassenname, der zurückgegeben wird. Die zusätzliche Beschreibung "Verbindung zur Datenbank" wird verwendet, um anderen Entwicklern eine aussagekräftige Beschreibung des zurückgegebenen Wertes zu geben. Dies ist nicht erforderlich, wird aber empfohlen.

Einer der großen Vorteile bei der Dokumentation Ihrer PHP-Methoden auf diese Weise ist, dass Sie dann Dokumentation entweder phpDocumentor oder doxygen generieren können.

+1

Ich kam mit der gleichen Frage ähnlich wie Graviton: Ihre Antwort ist eine Problemumgehung mit den IDE-Code-Analyse-Funktionen und keine PHP-Spezifikation. Wie auch immer, +1, weil es funktioniert. – Benj

+0

Sie können den Rückgabetyp überprüfen, indem Sie ihn vor der Rückgabe vorformatieren. Dabei wird jedoch nur überprüft, ob das zurückgegebene Ergebnis an den angegebenen Typ übergeben werden kann. Siehe [php.net/manual/en/language.types.type-juggling.php] (Danke an StackOverflow Benutzer DhruvPathak) – Benj

5

PHP unterstützt Typhinweis auf Rückgabetypen nicht. Vielleicht sollten Sie einen Dokumentationsblock hinzufügen, der den Rückgabetyp deklariert, und vielleicht wird Ihre IDE das übernehmen (ich weiß nicht, ob das geht oder nicht).

+0

Bestätigt mit NetBeans 8.1! Thx für den Hinweis – CHaP

4

Die IDE-Hinting ist über Kommentare gemacht. Hier ist ein Beispiel von einem meiner ZEND Front Plugins.

<?php 

/** 
* Initializes Application wide authentication 
* 
* @author Lance Rushing 
* @since 2009-06-01 
* @param Zend_Session $session 
* @return Zend_Auth <--- gives IDE Hint 
*/ 
protected function initAuth($session) 
{ 
    $auth = Zend_Auth::getInstance(); 
    require_once 'AuthStorage.php'; 
    $auth->setStorage(new My_AuthStorage($session)); 
    return $auth; 
} 
17

Für die Zukunft, das ist für 7 PHP implementiert ist mit folgenden Syntax (von der Quelle zitiert):

function foo(): array { 
    return []; 
} 

Um Ihre Frage zu beantworten jetzt, wie von PHP 7 (um Ende 2015 veröffentlicht) erhalten Sie die folgenden (als ein Beispiel der Lage zu tun):

<?php 

function ConstructPDOObject($hostname, $dbname, $username, $password): PDO 
{ 
    $dbh = new PDO("mysql:host=$hostname;dbname=$dbname", $username, $password); 
    return $dbh; 
} 

die Spezifikation für Typ-Hinting ermöglicht auch innerhalb und gegen Schnittstellen; für diejenigen von uns, die daran interessiert sind, die SOLID-Prinzipien einzuhalten.

Quelle und weitere Informationen: https://wiki.php.net/rfc/return_types

Verwandte Themen