Комментарии 25
Получается, что изобрели JSовский оператор
||
и назвали его Null Coalesce Operator
.0
Причем тут оператор ||? Просто в JS. можно обращаться к несуществующим элементам массива/обьекта получая в результате undefined коротрый кастится к false а в PHP получится warning и вернет null поэтому в теории || должен аналагично работать и в PHP.
+1
В
Но когда реализуют, станет возможно писать так в
developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Operators/Logical_Operators
PHP
expr1 || expr2
возвращает булево значение. В JS
expr1 || expr2
возвращает значение первого выражения если оно может быть преобразовано к true
, иначе значение второго выражения. Т.е. выражение 5 || 7
в PHP
вернёт true
, а в JS
— 5
. Но когда реализуют, станет возможно писать так в
PHP
5 ?? 7
и получать 5
, а не true
.developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Operators/Logical_Operators
+4
Это ?: и он уже давно есть
+2
$data = [];
isset($data['foo']) ? $data['foo'] : 'bar'; // нету варингов
$data['foo'] ? : 'bar'; // Варнинг, если error reporting level позволяет
$data['foo'] ?? 'bar'; // 'bar'
0
Если прочитать то сообщение, на которое я ответил, то там говорилось именно об ?: выражении. ?? — это абсолютно то же самое, только оно также сделает isset проверку для первого (но не второго, в отличии от жс) аргумента.
0
Там говорилось о разнице между || и ?: как раз таки и в частности разница в том, как js ведет себя в случае отсутствия запрашиваемого свойства. В этом собственно и отличие, и именно по этому ?: не может заменить ||. А вот ?? — полный аналог в контексте PHP.
+1
Так понятнее?
P.S. Опоздал.
// было
isset($_GET['mykey']) ? $_GET['mykey'] : '';
// стало
$_GET['mykey'] ?? '';
P.S. Опоздал.
+1
Да, вы определённо правы. Как-то только сейчас до меня дошло это.
0
Жаль я показал свое невежество. В действительности Null Coalesce Operator придумали не разработчики PHP.
Кстати, как указанно по ссылке выше, в JS это не совсем Null coalesing operator (если кто-нибудь переведёт на русский, то я буду благодарен), потому что там идёт проверка не на null, а на false. Собственно в PHP будет также.
И ещё одно. PHP многие осуждают за то, что ассоциативность тернарного оператора не такая как у всех. Зато как гармонично из него получилось вот такое «или».
Кстати, как указанно по ссылке выше, в JS это не совсем Null coalesing operator (если кто-нибудь переведёт на русский, то я буду благодарен), потому что там идёт проверка не на null, а на false. Собственно в PHP будет также.
И ещё одно. PHP многие осуждают за то, что ассоциативность тернарного оператора не такая как у всех. Зато как гармонично из него получилось вот такое «или».
0
Добавлю немного от себя: Официально запущен перевод документации PHP на Украинский язык. Ребята уже проделали огромную работу.
+6
НЛО прилетело и опубликовало эту надпись здесь
PHP всегда был языком с низким порогом входа. Все мы с вами были когда-то быдлокодерами, все с чего-то начинали. Именно доступность документации на родном языке, позволит какому-нибудь 13 летнему школьнику, не знающему английский, создать свою быдлостраничку в интеренете, а к 25 годам обеспечивать всю семью и быть сеньйором помидором в крупной компании. И никак не помешает ему выучить английский язык и использовать документацию в оригинале. Или вы никогда не писали $d и $f вместо $dir и $file_name? Не ставили собачку, чтобы не было нотиса? Сразу писали идеальный код?
И не путайте PHP с 1C, в документации нет примеров с таким бредом как "$schet = $klient * dengi;", переменные там названы как надо, а на русском только комментарии и сама документация.
И не путайте PHP с 1C, в документации нет примеров с таким бредом как "$schet = $klient * dengi;", переменные там названы как надо, а на русском только комментарии и сама документация.
+9
Те кто начинает совсем-совсем с нуля скорее начнут с каких-нибудь туториалов, либо книжек, их написано предостаточно на разных языках.
0
> на русском только комментарии и сама документация
так на русском или на украинском?
так на русском или на украинском?
-1
Соглашусь с vlreshet. Мы с вами просто в другое время росли, когда на английский так не налегали. Сейчас уже во многих садиках есть курсы английского, с 1-2 класса школы идет активное изучение, а к 2020 иностранный язык может стать обязательным в ЕГЭ. У меня ребенок в 2.5 года знает английский алфавит и цифры, несколько десятков слов, хотя специально мы с ним не занимались.
+1
НЛО прилетело и опубликовало эту надпись здесь
Я полагаю Irker говорит о том случае, когда PHP первый изучаемый язык программирования. Было бы странно, я считаю, изучать последовательно разные языки и поначалу в каждом быдлокодить. Как правило, только первый блин комом, а далее уже проще и понятнее.
0
Мне одному не понятно зачем? Перевести немного документации, отвечающей за основы типа циклов и условий — да. Для остального — есть оригинал на английском. Просто потом получаются быдлокодеры совершенно не знающие английского, и пишущие код типа "$schet = $klient * dengi;".
Скажу честно — английский знаю отлично, но доки, тот же php.net, если есть такая возможность, читаю на русском. Мне капельку удобнее, ну и на качество кода это никак не влияет.
По-моему на качество кода, в основном, влияет понимание материала, а не язык на котором ты его читал. И если люди на родном языке понимают документацию немного лучше — код будет немного правильнее ;)
+3
А как в phpmetrics оценивают Maintenability Index? Что-то в моих проектах он маленький, хотя удобство поддержки «много лет спустя» стоит буквально на первом месте среди прочих критериев разработки.
0
Изучение кодовой базы — Несколько советов о том, как знакомиться с новым кодом.
Мой перевод: Советы как изучать исходный код незнакомого продукта. На хабре опубликовать не могу.
+1
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Дайджест интересных новостей и материалов из мира PHP № 48 (7 – 21 сентября 2014)