2016-02-05 3 views
2

Хорошо, я наконец-то перешел на PHP7. Мой код немного устарел и будет восстановлен. Некоторые из проблем являются:PhpStorm: получите предупреждения о проверке кода для «Методы с тем же именем, что и их класс, не будут конструкторами»

class MagicClass 
    function MagicClass(){ 
     //etc 
    } 

Который дает предупреждение устаревания во время выполнения:

Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; MagicClass has a deprecated constructor in

Это хорошо:

class MagicClass 
    function __construct(){ 
     //etc 
    } 

Как я могу получить PhpStorm инспекцию кода в предупредите меня о таких ошибках в моей текущей кодовой базе?

+0

какая версия PHPStrom вы используете? –

+0

Просто используйте php linter 'php -l', чтобы перечислить и исправить его раз и навсегда. –

+0

PHPStorm 10.0.3 php -l хорош, но как настроить для phpstorm? –

ответ

2

Это не похоже, что PhpStorm v10 поддерживает этот конкретный случай. Он имеет «проверку совместимости с PHP 7», но он не помещает этот код каким-либо образом (независимо от того, какой уровень языка PHP вы выберете - будь то 5.6 или 7).

Решение должно установить «Плагин Php Inspection (EA Extended)» - он имеет такую ​​проверку, и он будет работать, даже если вы выберете 5.x как уровень языка PHP.

Обратите внимание: этот плагин имеет много проверок, некоторые из которых вы можете считать неправильным/бесполезен и т.д .. так что вы, возможно, есть необходимость пройти корыта каждую дополнительную инспекцию, предусмотренную этим плагином и отключить его при необходимости ,

1

В Preferences (на OSX) или Settings (на Windows, Linux &) диалоговое окно выбора Languages & Frameworks ->PHP в списке с левой стороны проверьте PHP language level выпадающий. Если ваш PhpStorm не очень стар, тогда у вас должен быть PHP версии 7 в этом списке.

PhpStorm использует выбранную версию PHP для проверки кода на проблемы синтаксиса. Он не должен быть установлен указанный PHP версии

После выбора PHP версии перейдите на Editor (я предполагаю, что это идет с переводчиками.) ->Inspections (также в левой части окна Preferences/Settings), затем в правой части убедитесь, что проверяется проверка PHP ->General ->Language Level. В своем описании он говорит:

Checks that language features used in the source code correspond the selected language level. (i.e. traits can be used only in PHP 5.4). Desired language level is set in the project configuration (Project Settings | PHP).

Update

Видимо, текущие версии PhpStorm не справиться с этой конкретной проблемы. Я тестировал его с версиями 9.0.2, 10.0.3 и 11 EAP, и никто из них не жалуется на конструкторы в стиле PHP4.

Кажется, что проверка уровня языка фокусируется на использовании новых функций PHP больше, чем на устаревших.

+0

Спасибо, но это не исправляет мою проблему. Да, я могу запустить каждый файл вручную, чтобы проверить наличие ошибок или предупреждений об отказе. Это была бы большая работа, и все еще есть шанс пропустить ее. Но то, что я пытаюсь получить, сопоставимо с типизацией mysql_query, и это затем пробивается. Совместимый способ проверки одинаково названных функций как конструкторов. (btw да, я настроил php7 + interpreter) –

+1

Интерпретатор не используется для проверки синтаксиса. Убедитесь, что вы включили проверку кода. Я обновил ответ. – axiac

+0

Да, это все включено, но предупреждений об устаревании для одинаково названных функций по-прежнему нет. Попробуйте сами: