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

PHP: имя переменной функции (указатель на функцию) вызывается; Как сказать IDE моя функция называется?

В настоящее время я пытаюсь удалить все ошибки и предупреждения, которые у меня есть в моем проекте, инструмент проверки из моего PHPStorm дает мне.

Я встречаю фрагмент, который PHPStorm говорит "Неиспользуемый частный метод _xxx", хотя он фактически используется, но динамически. Вот упрощенный фрагмент:

<?php
class A
{
    private function _iAmUsed()
    {
        //Do Stuff...
    }

    public function run($whoAreYou)
    {
        $methodName = '_iAm' . $whoAreYou;
        if (method_exists($this, $methodName)) {
            $this->$methodName();
        }
    }
}

$a = new A();
$a->run('Used');
?>

В этом фрагменте PHPStorm скажет мне "Неиспользуемый частный метод _iAmUsed", а на самом деле он используется... Как я могу, добавив PHPDocs или что-то еще, чтобы моя среда была понятна, мой метод действительно используется?

Обратите внимание, что я передаю свой вызов "run", статическую строку, но мы также можем представить следующее:

<?php
$a->run($_POST['whoYouAre']); //$_POST['whoYouAre'] == 'Used'
?>

Спасибо большое!

4b9b3361

Ответ 1

отметьте используемые методы в phpdoc как @used Пример

/**
* @uses  _iAmUsed()
* @param string $whoAreYou
*/ 
public function run($whoAreYou)
{
    $methodName = '_iAm' . $whoAreYou;
    if (method_exists($this, $methodName)) {
        $this->$methodName();
    }
}

Ответ 2

Добавьте примечание noinspection выше метода:

/** @noinspection PhpUnusedPrivateMethodInspection */
private function _iAmUsed()
{
    //Do Stuff...
}

Или после запуска анализа кода вы можете щелкнуть правой кнопкой мыши любую проверку в окне результатов и выбрать Suppress for statement, чтобы PHPStorm добавила собственно аннотацию. Для получения дополнительной информации см. http://www.jetbrains.com/phpstorm/webhelp/suppressing-inspections.html