Передача безопасных параметров в функцию или проверка функции? - PullRequest
1 голос
/ 27 декабря 2011

Пожалуйста, рассмотрите код ниже

<?php
$a = '';

echo empty($a) ? '' : substr($a, 0, 1); // Prints: ''
echo substr($a, 0, 1); // Prints: ''

Какой "эхо" лучше? В первом случае всегда проверяется $ a, а substr будет работать нормально, а во втором - substr внутренне проверяет $ a и может вызвать некоторые ошибки уведомления.

Ответы [ 3 ]

0 голосов
/ 27 декабря 2011

Входная строка должна быть одного символа или длиннее.Так что лучше проверить раньше.Пожалуйста, проверьте: http://php.net/manual/en/function.substr.php

0 голосов
/ 27 декабря 2011

Самая важная часть состоит в том, что вы различаете входные и выходные переменные:

$input['a'] = '';

$output['a'] = empty($input['a']) ? '' : substr($input['a'], 0, 1);

echo $output['a'];

То, как вы пишете проверку, является вашим делом, оно должно учитывать все крайние случаи и не должно вызывать каких-либо ошибок / предупреждений.

Редактировать: Если вы хотите уменьшить количество вызовов функций, в следующем фрагменте не используются никакие функции, только одна языковая конструкция:

$a = empty($a[0])?'':$a[0];
echo $a;
0 голосов
/ 27 декабря 2011

Первый лучше.

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

Хотя я бы даже не использовал однострочник только для удобства чтения.

...