Конвертировать из публичной собственности доступ к геттеру в PHPStorm

У меня есть проект, который содержит много экземпляров открытых свойств набора классов, доступ к которым осуществляется напрямую через $object->property, После преобразования свойств в protected и сгенерировал геттеры и сеттеры для каждого свойства.

Теперь я хотел бы провести рефакторинг каждого общедоступного свойства с соответствующим геттером. Есть ли в любом случае это может быть автоматизировано через PHPStorm?

Найти и заменить бесполезно, потому что объекты имеют разные имена в разных местах.

PHPStorm уже обнаружил Member has protected access, Может ли он обнаружить, что генерируется соответствующий геттер, и произвести замену там, где это происходит?

1 ответ

Решение

К сожалению, опция рефакторинга "Инкапсулировать поля" из IDEA недоступна в PhpStorm, поэтому невозможно полностью автоматизировать этот процесс. Может быть возможно написать плагин для этого, но, насколько я нашел, ни один в настоящее время не доступен.

Если я правильно прочитал ваш пост, вы уже защитили поля и сгенерировали необходимые методы получения. Чтобы быстро просмотреть все случаи доступа к защищенным свойствам, вы можете создать новый профиль проверки только для проверок аннотатора:

  1. Перейти в Файл -> Настройки
  2. Перейти в редактор -> Инспекции
  3. Нажмите "Управление" -> "Копировать", чтобы создать новый профиль проверки.
  4. Отключить все проверки, кроме General -> Annotator.
  5. Теперь щелкните правой кнопкой мыши корневой каталог проекта, выберите "Проверка кода" и выполните проверку с использованием нового профиля. Все случаи защищенного или частного доступа будут перечислены.

Надеюсь, это будет хоть как-то полезно для вас:)

Я использую эти шаги, чтобы решить эту проблему:

  1. Рефакторинг -> Переименовать. Переименуйте общедоступную собственность на какое-нибудь уникальное имя, например "askjdhakdjhqeoifnowinevowinvoiwn".
  2. Замените все вхождения "askjdhakdjhqeoifnowinevowinvoiwn" в своем проекте на геттер, например, "getProperty()".
  3. Установите публичное свойство на защищенное.
Другие вопросы по тегам