2009-10-26 3 views
1

Я строю несколько простых правил проверки в php, и моя IDE (phped) жалуется на синтаксис.PHP, что не так с синтаксисом этого кода?

Может ли кто-нибудь сказать мне, что не так со следующим?

function notBlank($str) { 
    (strlen($str) == 0) ? return false : return true; 
} 

PhpED жалуется на 'неожиданного'

Любые советы оценили.

Спасибо.

ответ

13

написать это следующим образом:

function notBlank($str){ 
    return strlen($str) != 0; 
} 
2

Написать это так:

function notBlank($str) { 
    return (strlen($str) == 0 ? false : true); 
} 
+0

Нет необходимости в тройном оператора здесь. –

+0

Вы можете удалить false или true, так как оператор возвращает логическое значение. – Garrett

+0

не в курсе, это только мой стиль кодирования ... –

2

Вы косяк использование возвращение в трехкомпонентных операторов. Если вы хотите сохранить этот синтаксис вы должны сделать что-то вроде этого:

function notBlank($str = '') { 
    $var = (strlen($str) == 0) ? false : true; 
    return $var; 
} 

Тем не менее сделать уведомление, что путь по умолчанию делать вещи более разборчивый:

function notBlank($str = '') { 
    if(strlen($str) == 0) 
     return false; 
    else 
     return true; 
} 

Надеется, что это помогает!

+1

Не могу сказать, что мне нравится, что «if (x) возвращает false else return true» type construction, когда вы можете просто использовать «return! X». Тем не менее, это получает +1 для фактического ответа на исходный вопрос о том, что было не так с запросом (а не просто объяснением другого способа сделать это.) – Beska

0

strlen() возвращает 0, когда строка пуста, а в PHP 0==false. Так что действительно, нет необходимости обертывать strlen() в функции. Если вы хотите настаивать на логическом ответе, то бросьте его. то есть:

(bool) strlen($string); 

Так вместо вашей функции, которая ПРЕДПОЛОЖИТЕЛЬНО вызывается в, если блок, вы бы просто

if(strlen($string)) //etc. 
+0

вы все равно можете поместить его в функцию, чтобы сделать код более понятным. Кто скажет, что определение «пусто» не изменится в будущем? Ваш код лучше способен обрабатывать такие изменения, если он завернут в функцию, потому что он более абстрагирован. – rmeador

+0

@rmeador: для меня это звучит как программирование в любом случае. Я согласен с тем, что если бы я планировал в конечном итоге реализовать более сложную условную, создание функции было бы уместным. Но если бы у меня не было этого намерения, я бы не хотел замедлять простые вызовы функций, обертывая их. – dnagirl