Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
$var = foo();
if (!$var) {
//...
}
if( !$some = some() )
{
...
}
if( ( $some = some() ) === false )
{
...
}
while(!(flag = foo()) {
bar(flag);
}
for($flag = foo(); !$flag; $flag = foo()) {
bar($flag);
}
if ( false = ($var = foo())) {
echo $var;
//...
}
if ( true = ($var = foo())) {
echo $var;
//...
}
if ( false = $otherVar = foo2() || true = ($var = foo())) {
echo $var;
//...
}
if( $var == true )
{
}яснее, нежели такая:if( $var )
{
}? Лично мне вторая ближе. Мозг схватывает смысл на лету, а не останавливается на ==, пытаясь «пропарсить» что у нас тут = или == или ===, а потом на true. Ваш пример я бы заменил на:if( $var = foo() )
{
} В этом случае я был бы гораздо ближе к пониманию логики сего кода. Я, ни в коем случае, не пытаюсь доказать, что мой подход лучше. Я лишь пытаюсь обратить внимание на то, что всё очень субъективно. И попытка угодить код тем, кто «не для себя», должна быть переосмыслена. Например дискуссией с коллегами :)if( ( $var = func() ) || ( $test = func() )
{
kill_all_...()
}
В вашем примере это не столь очевидно, но чаще всего имена методов длиннее, и конструкции вида $comment->checkBotDefence( true, $comment_item ) уже не позволяют разойтись :)if ($var = func()) {}// да, тут должно быть присваивание, чтобы сэкономить строчку кода, или строчку кода не экономить :)if ($position = strpos('123', '1'))
{
print_r('Символ найден на позиции ' . $position);
print "\n";
}
else
{
print_r('Символ не найден');
print "\n";
}
imenem@localhost:~ $ test Символ не найден
if ( false !== ($position = strpos('123', '1')) )
{
print_r('Символ найден на позиции ' . $position);
print "\n";
}
else
{
print_r('Символ не найден');
print "\n";
}
while( (row=[db nextRow]) ) { ... };
while( value = [obj yetAnotherMethod] ) { ... };
if ( a )
{
b -= 5;
if ( b>0 )
{
c = foo();
if ( c )
do_something();
}
}
if ( a )
{
if ( (b -= 5) > 0 )
{
if ( c = foo() )
do_something();
}
}
if ( a && (b -= 5) > 0 && (c = foo()) )
do_something();
if ($var = foo()){...}if ($var = foo()){
}
elseif ($var = foo2()){
}
elseif ($var = foo3()){
}
else
$var = foo4();
$var = foo();
if ($var){
}
else{
$var = foo2();
if ($var){
}
else{
$var = foo3();
if ($var){
}
else
$var = foo4();
}
}
if (!($var = foo())){...}if( !$var = foo() ){ ... }Я очень активно эксплуатирую такую возможность. Гореть мне в аду или ничего? :)$var = true;
switch($var){
case foo():
...
case foo2():
...
case foo3():
...
default:
...
}
while ($data = getNextPieceOfDataOrFalseIfThereIsNothingLeft()) {
doSomeCoolStuffWith($data);
}
if (file_exists($f = '/modules/' . $class . '/module.php') || file_exists($f ='/class/'. $class . '.php'))
include $f;
if (file_exists( '/modules/' . $class . '/module.php'))
include '/modules/' . $class . '/module.php';
elseif(file_exists('/class/'. $class . '.php'))
include '/class/'. $class . '.php';
'/class/'. $class . '.php'
Assignments in conditions (присваивания в условиях)