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 или что-то еще, заставить мою IDE понять, что мой метод фактически используется?

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

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

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

2 ответа

Решение

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

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

Добавить noinspection аннотация над методом:

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

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

Другие вопросы по тегам