JetBrains WebIDE: Gợi ý kiểu biến PHP?


80

Có cách nào để gợi ý WebIDE rằng một biến có một số kiểu không? Tôi phải lặp lại một mảng các đối tượng và không có tính năng tự động hoàn thành. Điều này giúp ích trong ZendStudio:

/* @var ClassName $object */

Tôi biết có một tính năng trong JetBrains để khai báo một mảng các đối tượng:

/**
 * @return ClassName[]
 */

Nhưng điều này chỉ hoạt động với kiểu trả về của hàm.


Nó hoạt động với các mảng. Nó có hoạt động với ArrayIterator lặp lại trên một kiểu cụ thể không?
redestructa

Câu trả lời:


143

/* @var ClassName $object */là một nhận xét PHPDOC không hợp lệ và không được phân tích cú pháp trong phiên bản Web IDE hiện tại. Sử dụng dấu hoa thị kép để làm cho nó hoạt động:

/** @var ClassName $object */

Ngoài ra, bạn có thể chú thích $arrayforeach($array as $var)với /** @var ClassName[] $array */$vargõ sẽ được suy luận tự động.


không biết về ký hiệu dấu ngoặc vuông
SandorRacz

2
Câu hỏi liên quan: Lớp PHP của tôi sử dụng magic getter cho một biến và tôi muốn liên kết biến getter đó với một đối tượng Class, bất kỳ ý tưởng nào về cách thực hiện điều đó? Vì tôi không thể xác định biến trong lớp của mình.
Sanket Sahu

Wow .. chỉ lên googled cho vui và thực sự không hy vọng rằng điều này sẽ thực sự là một điều .. Tôi chưa bao giờ sai trong đời và tôi rất vui vì tôi đã sai! Tính năng này rất thú vị, cảm ơn! :)
Cagatay Ulubay

29

Như đã chỉ ra, PhpStorm sẽ sử dụng các khối phpdoc thông thường:

/** @var ClassName $object */

Tuy nhiên, kể từ 2.1, nó cũng hỗ trợ các chú thích Netbeans / Eclipse / Zend @var :

/* @var $object ClassName */

Xin lưu ý rằng nhận xét bắt đầu bằng /*chứ không phải /**(do đó nó sẽ không hiển thị nếu bạn tạo tài liệu thực tế bằng phpdoc). Ngoài ra, các đối số được hoán đổi, mặc dù PhpStorm chấp nhận bất kỳ thứ tự nào:

/* @var ClassName $object */

Cuối cùng nhưng không kém phần quan trọng, chúng có thể đứng trước hầu hết mọi dòng mã tùy ý (về mặt kỹ thuật, các khối phpdoc bị hạn chế đối với một số mục nhất định).


Chỉnh sửa: kể từ năm 2019, các chú thích của Netbeans / Eclipse / Zend @var dường như gần như bị bỏ rơi. NetBeans 11 không còn hỗ trợ chúng nữa và nói chung chúng không được các IDE khác hỗ trợ. Tôi đề nghị sử dụng cú pháp khác.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.