Кажется, у меня возникли проблемы с моей IDE или, возможно, с моим кодом. Моя IDE (ZendStudio 11, построенная на Eclipse) не дает мне методов автоматического предложения объекта, когда я помещаю этот объект в конструкцию собственного массива PHP.
Как вы увидите ниже, автоматическое предложение работы для вещей, которые не имеют $this->
(объект доступа) и не иметь [$index]
(метод доступа к массиву), но потерпеть поражение работать после того, как эти средства доступа присутствуют.
Рассмотрим код ниже
Смотрите комментарии для проблемных областей
namespace Name\Space;
class PointArrayManager
{
private $points;
public function __construct()
{
$point = new Point();
$point-> //brings up auto-complete for Point()
$points[0] = new Point();
$points[0]-> //brings up auto-complete for Point()
$this->points[0] = new Point();
$this->points[0]-> //FAILS to bring up auto-complete
}
}
Что вызывает эту проблему и могу ли я улучшить мой код, чтобы в любом случае иметь автозаполнение?
Ваша IDE не может знать, что ваш $points
Свойство представляет собой массив объектов Point. Вам придется оказать ему некоторую помощь.
Способ сделать это — прокомментировать ваш код, по крайней мере, вам нужно будет прокомментировать объявление $points
переменная, как это: —
/** @var Point[] $points */
private $points;
Я не использую Zend Studio, но это работает в PHPStorm, поэтому я думаю, что это работает и в Zend Studio.
Комментирование вашего кода таким образом является хорошей практикой и помогает вашей IDE понять, что вы имеете в виду. Это также помогает с генерацией документации. Большинство PHP IDE используют PHPDocumentor для комментариев, поэтому руководство стоит прочитать.
Других решений пока нет …