2009-09-07 18 views
15

Qual è la sintassi corretta per me per specificare il tipo di suggerimento restituito per un metodo?Specificare il tipo di ritorno Suggerimenti per un metodo

Per esempio, ho un tale metodo:

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; 
} 

E voglio, ogni volta che io chiamo il metodo di cui sopra, l'IDE mi mostrerà i metodi per la DOP.

Come aggiungere il suggerimento tipo?

risposta

23

All'interno Aptana, PDT, Zend Studio e altri IDE è possibile aggiungere il tipo hinting ai metodi php come segue:

/** 
* 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; 
} 

Il nome della classe è posizionato dopo l'attributo @return del blocco di documentazione per indicare il tipo di ritorno del metodo. Per esempio. Nel caso del metodo di esempio, PDO è il nome della classe restituito. La descrizione aggiuntiva "connessione al database" viene utilizzata per fornire una descrizione significativa del valore restituito ad altri sviluppatori, questo non è richiesto ma è consigliato.

Una delle grandi cose sulla documentazione dei metodi php in questo modo, è che è possibile generare documentazione utilizzando phpDocumentor o doxygen.

+1

Venivo con la stessa domanda simile a quella di Graviton: la tua risposta è una soluzione alternativa che utilizza le capacità di analisi del codice IDE e non una specifica PHP. Ad ogni modo, +1 perché funziona. – Benj

+0

È possibile controllare il tipo di reso pre-casting prima di tornare, ma controlla solo se il risultato restituito può essere convertito nel tipo specificato. Vedi [php.net/manual/en/language.types.type-juggling.php] (Grazie a DhruvPathak di StackOverflow) – Benj

5

PHP non supporta il tipo di suggerimento sui tipi restituiti. Forse dovresti aggiungere un blocco di documentazione che dichiari il tipo di reso e forse il tuo IDE lo raccoglierà (non so se lo farà o meno).

+0

confermato con NetBeans 8.1! Thx for the clue – CHaP

4

Il hinting IDE è fatto tramite i commenti. Ecco un esempio da uno dei miei Plugin Front di ZEND.

<?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

Per riferimento futuro, questo è implementato per PHP 7, con la seguente sintassi (citato dalla fonte):

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

Per rispondere alla tua domanda ora, a partire dal PHP 7 (uscito intorno fine del 2015) si sarà in grado di eseguire le seguenti operazioni (ad esempio):

<?php 

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

la specifica consente anche per il tipo di hinting dentro e contro le interfacce; per quelli di noi interessati ad aderire ai principi SOLIDI.

Fonte e ulteriori informazioni: https://wiki.php.net/rfc/return_types

Problemi correlati