PHP - не оператор, любые другие псевдонимы? - PullRequest
2 голосов
/ 06 февраля 2011

if(!($whatever && what()) do_stuff...

Может ли это быть заменено чем-то более интуитивным, например:

if(not($whatever && what()) do_stuff...

?

Ответы [ 4 ]

4 голосов
/ 06 февраля 2011
function not($OriginalCheck)
{
    return !$OriginalCheck;
}

function is($OriginalCheck)
{
    return !!$OriginalCheck;
}

должен делать именно это:)

Существует несколько способов выписать чеки:

  • if(!($whatever && what()) do_stuff...
  • if(!$whatever || !what()) do_stuff...
  • if(($whatever && what()) === false) do_stuff...
  • if((!$whatever || !what()) === true) do_stuff...
  • if($whatever === false || what() === false) === true) do_stuff...

Все эти способы интуитивно понятны и известны всему миру программирования.

2 голосов
/ 06 февраля 2011

Нет, не может. См. http://www.php.net/manual/en/language.operators.logical.php для справки по языку о логических операторах и перейдите, чтобы найти другие псевдонимы.

Обратите внимание, что приоритет && и || не совпадает с and и or.

1 голос
/ 06 февраля 2011

Один из вариантов - сделать логическое выражение более явным:

if(($whatever && what()) == false) // do_stuff...

Или, альтернативно, путем реализации пользовательского not():

function not($expr) {
    return $expr == false;
}

if(not($whatever && what())) // do_stuff...
0 голосов
/ 06 февраля 2011

Альтернативы нет !, но она может быть написана меньше интуитивно понятно:

if ($whatever - 1) {
}

Если возникает вопрос, что ! слишком просто упускать из виду , но not более заметным;тогда другой альтернативной нотацией будет:

if (!!! $whatever) {

Если это все еще выглядит просто, просто используйте:

if (~$whatever & 1) {

Бинарные операции всегда выглядят профессионально;)

...