Автоматически устаревшие предупреждения для методов PHP с аннотацией @deprecated - PullRequest
7 голосов
/ 07 июля 2011

Каковы возможности реализовать помощник, который будет вызывать журнал ошибок с уровнем E_DEPRECATED (фактически E_USER_DEPRECATED), когда вызывается метод класса с аннотацией @deprecated?

Например, для кода

/**
 * @deprecated
 */
public function main()
{}

при вызове метода $obj->main() устаревшее предупреждение будет выдано.

И да, я знаю, что могу добавить предупреждение, используя строку кода trigger_error().

Ответы [ 4 ]

4 голосов
/ 07 июля 2011

Короче говоря: поставьте trigger_error() в начале метода.

Long: вам нужно отразить класс, получить DocComment, разобрать его и извлечь тег @deprecated. Проблема в том, что вы должны делать это при каждом вызове метода, и даже если существует простой способ перехвата каждого вызова, это будет огромными накладными расходами.

1 голос
/ 23 января 2013

Если вы все еще заинтересованы в ответе:

$trace = debug_backtrace();
$trace = $trace[0];
Helper::logToFile('called deprecated method '.__ FUNCTION __.' on line '.$trace['line'].' in file '.$trace['file'], 'deprecated');

Где может выглядеть метод журнала в файл:

$text .= "\n";
$file = fopen('log/deprecated', 'a+');
fputs($file, $text, strlen($text));
fclose($file);
0 голосов
/ 07 июля 2011

Приложение может помочь, оно добавляет аннотации к PHP.

0 голосов
/ 07 июля 2011
  1. может быть вам поможет собственный файл-парсер ...
  2. устарело означает, что в следующей версии эта функция будет удалена из кода ... в этом случае вам не нужно думать о E_DEPRECATED
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...