PHP-код, это медленно или неправильно? - PullRequest
0 голосов
/ 19 января 2011

"в этой строке найдено несколько аннотаций"

Раньше я использовал aptana и другие IDE, но никогда не выдавал эту ошибку, но вчера я установил Zend Studio, и она выдает следующую ошибку во всем моем коде, который я назначил, а также проверил, выполнялось ли условие одновременно. 1003 *

code:
line 16: if ($message_array = @unserialize($e->getMessage()))
line 17:    $message = $message_array;

для всех условий if, где я присвоил значение переменной, а также проверил, является ли переменная true / false, выдает ошибку «несколько аннотаций найдено в этой строке»

Ответы [ 2 ]

9 голосов
/ 19 января 2011

Да, этот синтаксис обычно помечается большинством приличных IDE как "Случайное назначение" (поскольку не очевидно, если вы имели в виду = или ==). Большинство из них позволит вам обернуть его в (), чтобы заглушить ошибку (с тех пор очевидно, что вам нужен результат, а не тест):

if (($message_array = @unserialize($e->getMessage()))) {
}

Кроме того, для удобства чтения и обслуживания я бы предложил несколько вещей.

Сначала используйте брекеты. Поскольку это только особый случай, в котором вы не можете их использовать, я лично считаю, что лучше использовать их всегда, чтобы было понятно, что они имели в виду.

Во-вторых, выполните все присвоения за пределами условия if. Это делает его более четким и простым, чтобы быстро понять, что вы имели в виду. Плюс это выглядит менее загроможденным.

$message_array = @unserialize($e->getMessage());
if ($message_array) {
    ...
}

В-третьих, я бы предложил исключить оператор @. Для меня это признак гниения кода. Хотя я знаю, что его легко использовать и легче, чем правильно обрабатывать ошибку, я думаю, что это всего лишь краткий путь, который сделает вашу жизнь труднее. Вы можете избежать этого несколькими способами. Во-первых, вы можете проверить строку, прежде чем передать ее unserialize. Убедитесь, что он не пустой, строка и т. Д. Во-вторых, вы можете установить error handler, чтобы выдавать исключения при ошибках PHP (что я и делаю). Таким образом, вы просто заключаете вызов unserialize в блок try {} catch(){}. Это лучше, так как вы на самом деле можете проверить ошибку, а не просто поверить, что выданная ошибка - это то, что вы думаете ...

3 голосов
/ 19 января 2011

Это не фактическая ошибка.Вместо этого в среде IDE было найдено более одной ошибки, предупреждения или подсказки в одной и той же строке кода.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...