2009-09-07 28 views
15

Cú pháp chính xác để tôi chỉ định gợi ý kiểu trả về cho một phương thức là gì?PHP Chỉ định các gợi ý kiểu trả về cho phương thức

Ví dụ, tôi có một phương pháp như:

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

Và tôi muốn, bất cứ khi nào tôi gọi là phương pháp trên, IDE sẽ hiển thị cho tôi những phương pháp để PDO.

Làm cách nào để thêm gợi ý loại?

Trả lời

23

Trong Aptana, PDT, Zend Studio và khác IDE của bạn có thể thêm loại gián tiếp với các phương pháp php như sau:

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

Tên lớp được đặt sau khi các thuộc tính @return của khối tài liệu để biểu thị kiểu trả về của phương thức. Ví dụ. Trong trường hợp phương pháp ví dụ của bạn, PDO là tên lớp được trả về. Mô tả bổ sung "kết nối đến cơ sở dữ liệu" được sử dụng để cung cấp một mô tả có ý nghĩa về giá trị trả về cho các nhà phát triển khác, điều này là không cần thiết nhưng được khuyên.

Một trong những điều tuyệt vời về việc ghi lại các phương pháp php của bạn theo cách này, là bạn có thể tạo tài liệu bằng cách sử dụng phpDocumentor hoặc doxygen.

+1

Tôi đã đến với cùng một câu hỏi tương tự như của Graviton: câu trả lời của bạn là một cách giải quyết bằng cách sử dụng các khả năng phân tích mã IDE và không phải là một đặc điểm kỹ thuật PHP. Dù sao, +1 bởi vì nó hoạt động. – Benj

+0

Bạn có thể kiểm tra kiểu trả về bằng cách tạo trước nó trước khi quay trở lại, nhưng nó chỉ kiểm tra xem kết quả trả về có thể được đưa vào loại đã chỉ định hay không. Xem [php.net/manual/en/language.types.type-juggling.php] (Cảm ơn người dùng StackOverflow DhruvPathak) – Benj

5

PHP không hỗ trợ gợi ý loại trên các loại trả lại. Có lẽ bạn nên thêm một khối tài liệu khai báo kiểu trả về và có lẽ IDE của bạn sẽ chọn nó (tôi không biết nó có hay không).

+0

Xác nhận với NetBeans 8.1! Thx cho các đầu mối – CHaP

4

Gợi ý IDE được thực hiện qua nhận xét. Dưới đây là một ví dụ từ một trong các cổng cắm phía trước ZEND của tôi.

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

Để tham khảo trong tương lai, điều này được thực hiện cho PHP 7, với cú pháp sau (trích dẫn từ nguồn):

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

Để trả lời câu hỏi của bạn bây giờ, như PHP 7 (phát hành khoảng cuối năm 2015) bạn sẽ có thể thực hiện các thao tác sau (ví dụ:)

<?php 

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

Đặc điểm kỹ thuật cũng cho phép loại gợi ý bên trong và chống lại giao diện; cho những người trong chúng ta quan tâm đến việc tuân thủ các nguyên tắc SOLID.

Nguồn và thông tin khác: https://wiki.php.net/rfc/return_types

Các vấn đề liên quan