Расширение типа-намека на PHP
Можно ли расширить тип-намек с помощью другого тега documentor в Netbeans?
Я ищу способ расширить тип-намек тегом @scope
, который позволит включенным файлам получить доступ к области объектов.
Пример:
file: template.php
<?php /* @var $this MyObject */
Это позволило бы только вводить типы общедоступных переменных и методов. То, что я надеюсь сделать, это расширить тип-намек с помощью тега @scope
, позволяя ему получить доступ к области MyObject:
file: template.php
<?php /* @scope MyObject */
Что бы сделать содержимое файла таким, как оно было бы в области MyObject, а $this
подскажет частные методы.
Теперь у меня нет опыта разработки платформы Netbeans, но у меня есть опыт Java. Если бы я хотел выполнить это, с чего бы начать?
Надеюсь, это не слишком слабое задание.
Ответы
Ответ 1
В прошлом (более старые версии NetBeans) тип-подсказка показывала все методы из класса (какого объекта использовался), то есть все общедоступные, защищенные, частные и даже статические методы. Теперь, в новых версиях NetBeans, эта ошибка была исправлена, и когда тип-намек на объект, только доступные методы/свойства имеют тип-намек.
Это просто потому, что ваш шаблон не может получить доступ к вызову private property/method класса, а также если у вас есть объект (экземпляр класса). Вы не сможете получить доступ к классу static class/методы.
То же самое относится, если вы хотите ввести подсказку внутри класса - теперь тип-намек перечисляет все общедоступные, защищенные и приватные методы для $this->|
(|
- это курсор), в то время как статические свойства и методы до сих пор не указаны. С другой стороны, если вы указали тип на MyClass::|
, теперь перечислены только статические свойства/методы и снова, когда внутри класса MyClass перечислены все общедоступные, защищенные и общедоступные, а при доступе извне частных (очень правильно) отсутствуют в списке.
Таким образом, функция, которую вы запрашиваете, неверна и отрицает правильные принципы инкапсуляции.
Ответ 2
Я знаю, что мы не должны предлагать какие-либо инструменты, но иногда я не могу удержаться от чувства, что люди пытаются решить проблемы с неправильным. NetBeans, на мой взгляд, медленно следит за шагами Eclipse, которые почти полностью отказались от поддержки PHP с течением времени. Однако есть и другие IDE, специально предназначенные для языка PHP, которые решают некоторые проблемы из коробки.
Лично я хочу, чтобы инструмент, который дает мне большую функциональность, мне нужно с самого начала. Я не заинтересован в написании плагинов, которые занимают мое время и могут быть устаревшими с течением времени. Таким образом, я выбрал коммерческую IDE, которая дает мне больше, чем мне нужно, и, кстати, она прекрасно соответствует вашим потребностям, включенным в вопрос. Если вы собираетесь писать PHP-код, я настоятельно рекомендую вам подумать о том, чтобы заплатить за профессиональный инструмент.
О самой проблеме Я просто приведу пример ссылки на запрос функции, который показывает, как проблема была добавлена: Разрешить защищенный член доступ к @var $this (т.е. в представлениях). Также есть еще несколько связанных функций, которые могут оказаться интересными.
Итак, чтобы подвести итог моему мнению: если вы собираетесь затянуть винт, используйте отвертку, а не молоток.