2012-12-17 51 views
6

Tôi đã tìm thấy một cách để nói loại netbeans biến theo cách như vậy:Xác định loại biến trong Netbeans PHP

/* @var $variablename Type */ 

Tuy nhiên trong trường hợp này không có gợi ý (Cơ sở dữ liệu là lớp học của tôi):

//model.php 
abstract class Model { 
     /* @var $db Database */ 
     protected $db; 
     (...) 
} 

//Mymodel.php 
class MyModel extends Model { 
     (...) 
     $this->db-> //no hints 
     (...) 
} 

Giới hạn của Netbeans hay đúng hơn là lỗi của tôi?

+0

Vâng, tất cả các lớp (Cơ sở dữ liệu, Mô hình và MyModel) tập tin nằm trong cùng một thư mục, trong lớp mẫu tôi đã có cơ sở dữ liệu gợi ý, tuy nhiên tôi đã có chúng ngay cả khi không có bình luận như vậy, trong MyModel tôi đã có gợi ý từ lớp cha, nhưng không có gợi ý với MyModel-> db. Phiên bản 7.2 – Andy

+0

Loại biến cần tiền tố tên biến, nó nên đọc '@var Cơ sở dữ liệu $ db' thay vì theo cách khác. Các nguồn sự cố có thể khác: đường dẫn sai bao gồm (bạn có thể STRG + bấm vào biến $ db của bạn?) Hoặc truy cập thuộc tính trong lớp chứ không phải trong phương thức lớp. – SaschaM78

Trả lời

4

Trước hết, xác định kiểu biến đầu tiên, như thế này:

/* @var Database $db This is my Database object */ 

Và thứ hai tôi sẽ đề nghị sử dụng PHPDoc cho ý kiến, như:

class Model { 

/** 
* @var Database $db This is my Database object 
*/ 
protected $db; 

nên không có vấn đề rồi .. .

+0

Nó hoạt động :-) Vấn đề là một dòng bình luận – Andy

+0

+1 Bạn làm cho tôi nhận ra vấn đề là gì. Tôi đã thêm một câu trả lời cho đầy đủ. –

+0

Không thấy chỉ có một dấu hoa thị sau dấu gạch chéo, được quan sát kỹ. – SaschaM78

8

NetBeans có thể sử dụng hai chú thích nhận xét tương tự nhưng khác nhau:

  1. phpdoc khối bình luận Tốt, bắt đầu bằng /** và được đặt ngay trước mặt hàng nét:

    /** 
    * @var Database $db Database connection instance 
    */ 
    protected $db; 
    
  2. Variable type comments inline, bắt đầu bằng /* và được đặt ở đâu đó trước khi sử dụng item :

    $foo = $this->db; 
    /* @var $foo Database*/ 
    $foo->... 
    

Loại thứ hai trở nên hữu ích khi các nhận xét docblock không khả dụng hoặc không hữu ích, ví dụ: bạn đang sử dụng thư viện của bên thứ ba không được tài liệu hoặc loại biến của bạn không thể được theo dõi tự động.

Bạn đã được về cơ bản sử dụng cú pháp cho # 2 trong bối cảnh cho # 1 ;-)

+0

Điểm tốt! +1. – shadyyx

+0

Vâng, tôi đã thử nhận xét (/ sao đôi)/** trong một phương thức. Thay đổi điều đó thành/* và thì đấy. –

+0

Cảm ơn bạn vì điều này. Chỉ cần những gì tôi đang tìm kiếm. – MarthyM

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