Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
assert('is_int($int) /* $int parameter must be an int, not just numeric */');Утверждения не должны использоваться в обычных операциях, таких как проверка входных параметров.:)
если NULL использовался как значение параметра по умолчанию, то это будет также допустимо в качестве аргумента для последующего вызова.
class A { function foo(B $b) { var_dump($b); } }
$a = new A();
$a->foo(null); // Catchable fatal error: Argument 1 passed to A::foo() must be an instance of B
$b = null;
$a->foo($b); // Catchable fatal error: Argument 1 passed to A::foo() must be an instance of B
это невозможно понять, это нужно просто запомнить
Чем осложняют?
Какая разница — будет ли геттер вызван ядром или __get объявленном в родительском классе?
С другой стороны меньше синтаксических конструкций, меньше путаницы для новичков.
Чем осложняют? Какая разница — будет ли геттер вызван ядром или __get объявленном в родительском классе?
По сути тут четыре минуса
можно получить элемент массива сразу момент его объявления
func()[idx], отдельно ($a ? $b : $c)->property и вот теперь зачем-то сделали такую же отдельную поддержку для индексации констант. Судя по всему, грамматика у них написала бессистемно.$retcode=ext_api_call();
echo [RET_SUCCESS=>'SUCCESS',RET_ERROR=>'ERROR'][$retcode];
Не могу себе представить, для чего это может быть нужно.
Судя по всему, грамматика у них написала бессистемно.
Это нужно постоянно.Ну и ничего, переучились же впоследствии? Стремиться к краткости записи, используя неочевидные свойства языка — не самая лучшая практика. Очень быстро выходит боком при необходимости быстро разобраться в том, что делает написанный хотя бы полгода назад код — особенно, если на тот момент вы только начинали изучать язык.
Вообще формальной грамматики в PHP отдельно от транслятора нет.Только что посмотрел — таки есть, но там все и правда печально.
Судя по всему, грамматика у них написала бессистемно.Это не говоря уж о такой штуке как:
empty() можно применять к результатам функций или выражений без необходимости сохранять этот результат в отдельную переменнуюРеально как это вообще можно было сделать, чтобы отдельно взятые конструкции выборочно работали с разными rvalue. Какое уж тут бессистемно, это какой-то абсурд вообще)
Обновлена библиотека GD, в частности появилась поддержа WebPВ каком смысле «появилась»? Она там была (http://bolknote.ru/2012/08/16/~3716/), может по-умолчанию включена теперь?
Предыдущий мажерный релиз 5.4 был выпущен чуть больше года назад (1 марта 2012 года), а 5.3 аж в 2009 году (30 июня) — легко заметить, что разработка PHP наращивает темп!
<?php
$arr=[
'something1.ending',
'something2.ending',
'something3.ending',
#To be continued ...
];
?>
<?php
foreach($arr as &$v)
$v=basename($v,'.ending');
?>
<?php
foreach($arr as &$v)
$v=substr($v,0,strrpos($v,'.ending'));
?>
<?php
if($something)
return true;
else
return false;
?>
foreach($arr as &$v)
$v=basename($v,'.ending');
$v=substr($v,0,strrpos($v,'.ending'));
Казалось бы, зачем тут else?
3) За экономию на пробелах расстреливать надо.Ой подписываюсь, ой больная тема.
Ещё из того же жанра мне нравится:
<?php if($something) return true; else return false; ?>
Казалось бы, зачем тут else?
<?php
return $something;
?>
Народ, вы либо устали, либо серьёзно считаете, что писать else после return это нормально? Какой смысл ставить else, если return возвращает результат и код дальше не исполняется?
<?php
$a=7;
if($a==5)
return true;
else
return false;
?>
<?php
$a=7;
if($a==5)
return true;
return false;
?>
<?php
if($something)
DoSomething();
DoFinally();
?>
Если вы не различаете, что выполняется в условии, а что вне его, то я могу только посочувствовать.
То есть — когда в логике нет ненужных конструкций / операторов — это теперь называется говнокодом?
Ок, по пунктам:
if($something)
DoSomething();
DoFinally();
Вам не кажется, что $something и true чем-то отличаются? Если мне не нужно возвращать $something, а я хочу именно true, то что?
return (bool)$something;
Народ, вы либо устали, либо серьёзно считаете, что писать else после return это нормально? Какой смысл ставить else, если return возвращает результат и код дальше не исполняется?
...
return (bool)$something;
...
if ($something) {
return $newValue;
}
return $defaultValue;
мозг все равно сначала придумывает кривые решения, а уже потом приходится их пееводить на нормальные.
«человек в детстве изучавший бейсик, потерян для программирования навсегда»
Ээээ, не одобряю с оглядкой на Линуса ))
В свое время была такая пословица — «человек в детстве изучавший бейсик, потерян для программирования навсегда». И как человек первая программа которого (да, в 1989 году) была написана на бейсике готов с этой мыслью согласится. Не то, чтобы совсем потерян, но мозг все равно сначала придумывает кривые решения, а уже потом приходится их пееводить на нормальные.
Вышел финальный релиз PHP 5.5.0