Подтвердить что ты не робот

Расширение типа-намека на PHP

Можно ли расширить тип-намек с помощью другого тега documentor в Netbeans?

Я ищу способ расширить тип-намек тегом @scope, который позволит включенным файлам получить доступ к области объектов.

Пример:

file: template.php
<?php /* @var $this MyObject */

Это позволило бы только вводить типы общедоступных переменных и методов. То, что я надеюсь сделать, это расширить тип-намек с помощью тега @scope, позволяя ему получить доступ к области MyObject:

file: template.php
<?php /* @scope MyObject */

Что бы сделать содержимое файла таким, как оно было бы в области MyObject, а $this подскажет частные методы.

Теперь у меня нет опыта разработки платформы Netbeans, но у меня есть опыт Java. Если бы я хотел выполнить это, с чего бы начать?

Надеюсь, это не слишком слабое задание.

4b9b3361

Ответ 1

В прошлом (более старые версии NetBeans) тип-подсказка показывала все методы из класса (какого объекта использовался), то есть все общедоступные, защищенные, частные и даже статические методы. Теперь, в новых версиях NetBeans, эта ошибка была исправлена, и когда тип-намек на объект, только доступные методы/свойства имеют тип-намек.

Это просто потому, что ваш шаблон не может получить доступ к вызову private property/method класса, а также если у вас есть объект (экземпляр класса). Вы не сможете получить доступ к классу static class/методы.

То же самое относится, если вы хотите ввести подсказку внутри класса - теперь тип-намек перечисляет все общедоступные, защищенные и приватные методы для $this->| (| - это курсор), в то время как статические свойства и методы до сих пор не указаны. С другой стороны, если вы указали тип на MyClass::|, теперь перечислены только статические свойства/методы и снова, когда внутри класса MyClass перечислены все общедоступные, защищенные и общедоступные, а при доступе извне частных (очень правильно) отсутствуют в списке.

Таким образом, функция, которую вы запрашиваете, неверна и отрицает правильные принципы инкапсуляции.

Ответ 2

Я знаю, что мы не должны предлагать какие-либо инструменты, но иногда я не могу удержаться от чувства, что люди пытаются решить проблемы с неправильным. NetBeans, на мой взгляд, медленно следит за шагами Eclipse, которые почти полностью отказались от поддержки PHP с течением времени. Однако есть и другие IDE, специально предназначенные для языка PHP, которые решают некоторые проблемы из коробки.

Лично я хочу, чтобы инструмент, который дает мне большую функциональность, мне нужно с самого начала. Я не заинтересован в написании плагинов, которые занимают мое время и могут быть устаревшими с течением времени. Таким образом, я выбрал коммерческую IDE, которая дает мне больше, чем мне нужно, и, кстати, она прекрасно соответствует вашим потребностям, включенным в вопрос. Если вы собираетесь писать PHP-код, я настоятельно рекомендую вам подумать о том, чтобы заплатить за профессиональный инструмент.

О самой проблеме Я просто приведу пример ссылки на запрос функции, который показывает, как проблема была добавлена: Разрешить защищенный член доступ к @var $this (т.е. в представлениях). Также есть еще несколько связанных функций, которые могут оказаться интересными.

Итак, чтобы подвести итог моему мнению: если вы собираетесь затянуть винт, используйте отвертку, а не молоток.