2017-01-12 3 views
0

У меня есть предупреждение в PhpStorm для общего использования статических вызовов. у меня есть:PhpStorm: анализ кода - статические вызовы от имени класса

class Test { 
    public static function thisIsATest(){ 
    // do stuff 
    } 
} 

Тогда у меня есть:

$className = 'Test'; 
$className::thisIsATest(); 

Это не ошибка, кстати у меня есть это в моем PhpStorm: warning_phpstorm

Есть ли способ справиться с этим ? По крайней мере, можно ли просто скрыть это предупреждение?

+0

Как насчет использования PHP 5.3.0 или выше. Перед этой версией ваш синтаксис не разрешен. Test Versions herer: http://sandbox.onlinephpfunctions.com/ – JustOnUnderMillions

+0

Альтернатива вы можете сделать это: 'call_user_func (array ('Test', 'thisIsATest'));' – JustOnUnderMillions

+1

К сожалению, PhpStorm еще не поддерживает подобный класс. Два варианта: 1) Отключите проверку «Неизвестного метода», но это затронет и все остальные места; 2) Подавить сообщение для этой строки, помещая '/ ** @noinspection PhpUndefinedMethodInspection * /' в строку перед '$ className :: thisIsATest();' 3). Дайте руку IDE, предоставив лучший тип подсказки для '$ className 'variable - тот, который IDE понимает:'/** @var Test $ className */'before' $ className = 'Test'; 'строка – LazyOne

ответ

1

Есть некоторые решения, для решения этой проблемы:

  1. изменение в PHP версии> = 5.3.0

  2. call_user_func(array('Test','thisIsATest')); использования в более ранних версиях PHP

  3. изменение кода проверки -поведение в phpstrom в соответствии с настройками проекта (также убедитесь, что phpstrom имеет правильную настройку PhpVersion для вашего текущего проекта)

  4. [Решение] Объявите переменную с аннотациями в phpstrom в правильном направлении!

Как:

<?php 
    /** 
    * @var $className Test 
    */ 
    $className::thisIsATest(); 

Теперь phpstrom знаю, что $className является экземпляром Test, который имеет метод, называемый thisIsATest, и никакого намека на ошибки не выскочит.

+0

На самом деле мой код работает (я на PHP5.6). Это только код hilighter от Phpstorm, который показывает мне предупреждение. На данный момент я понизил серьезность. Благодаря! – dam660

+0

@ dam660 Работа с Phpstorm иногда напоминает, что у вас миллион миньонов :-) Я уже немного заметил, что ваш Q был о phpstrom не самом коде. :) – JustOnUnderMillions

+0

@ dam660 Проверьте мой ответ еще раз! – JustOnUnderMillions

 Смежные вопросы

  • Нет связанных вопросов^_^