Как стать автором
Обновить
8
0
Александр @torf

PHP программист

Отправить сообщение
Я учился программированию на паскале, и знаете, когда я сел за пых, для меня было такое облегчение, что нигде нету THEN, NOT, BEGIN, END, разных неудобных какашек, что такой пустяк, как странная логика тернарного оператора не кажется чем-то плохим.

Кстати насчёт «что они курили» =) почитайте на досуге мою статью, а ещё лучше комментарии к ней. Поверьте, по сравнению с другими косяками, тернарный оператор — просто сама очевидность.
4 будет выведено
Какой результат будет у следующего выражения?
php -r «print true? 1: true? 2: true? 3: true? 4: 5;»


Мой ответ: результатом будет вывод текста в консоль. Теперь я надеюсь всё в порядке.

Естественно, неочевидно. Касаемо тернарного оператора — ассоциативность правая, так что нет ничего неожиданного в выводе «4» на экран. И по--моему правая ассоциативность — это одна из тех штук в php, которую сразу замечаешь при изучении тернарного оператора
и порождает, в частности, говнокод
Вы определитесь, что вы у меня спрашиваете
— результат print true? 1: true? 2: true? 3: true? 4: 5;
— результат true? 1: true? 2: true? 3: true? 4: 5;
?

Про ассоциативность я знаю, не переживайте, а вот знаете ли вы, как сработает выражение
print true? 1: true? 2: true? 3: true? 4: 5; я сильно сомневаюсь
Запустил, var_dump() выдаёт (int) 1. Что я делаю не так?
я не понимаю, в PHP, что — тысяча операторов? В чём состоит сложность? В нежелании запомнить, в лени, в чём?
я лично думал что будет нотис и мне не стыдно

Знаете, что плохо? Не то что, программист чего-то не знает. Все мы люди и всё в голове удерживать просто невозможно. Но если программист сталкивается с странным, на его взгляд поведением, и забивает болт, вместо того, чтобы разобраться как и почему такое происходит, предпочитая порасставлять скобки где, только можно, то это очень печально. Значит человеку это неинтересно, значит человек мыслит по шаблону «да ничё страшного не будет, подумаешь пятьсот лишних знаков и действий-пустышек, которые не несут ни какой смысловой нагрузки, серваку то похер». Как выше, справедливо отметили, обленились нынешние программисты. Я, конечно не застал то время (вернее застал, но в нежном возрасте), когда писалась Windows 3.1, когда ребята сидели ночами возле Dial-up и думали над каждой деталью программы, потому что ресурсы были крайне ограниченны и мощности не позволяли, но когда читаешь статьи о тех временах, чувствуешь себя говном.
Вот вы привели ссылку на приоритеты, покажите где на ней написано, что приоритет new выше чем у вызова функции?

1. Прошу прощения, не совсем понял, что вы имеете ввиду. Если вам не очень сложно, приведите, пожалуйста, пример.
2. Оператор new находится выше всех в таблице приоритетов, этого вам недостаточно? Я думаю, не нужно быть гением, чтобы интерпретировать этот факт, как "new, при наличии каких-либо других операторов, в любом случае будет исполнен первым".
3. С каких пор вызов функции является оператором?
главное, чтобы код был понятен всем

Вы же не со школьниками в команде?
P.S. пусть школьник не обижаются, есть и исключения.
Я понимаю, что у PHP низкий порог вхождения, но это абсолютно не значит, что останавливаться в его изучении на пункте мануала «Цикл foreach()» и со словами «я всё знаю, я у мамы инженер» идти работать над каким-то проектом с такими же «специалистами» = это нормальное поведение.

Смысл программировать на языке, если человек его не знает? Стандарты нужны для структурирования кода и облегчения командной разработки, без ущерба коду. Если стандарт заставляет вас навешивать лишние скобки, заменять побитовые операции (в том примере это вполне нормально и правильно), переписывать любой механизм, который содержит что-либо, не описанное в книге «Как выучить пых за 24 часа, стать крутым программистом и написать фэйсбук», то, лично моё мнение, такой стандарт нужно сдать в утиль.

Лично я в самом первом блоке кода не вижу никакой гениальности, я вижу код без лишнего говна.
и тем более if (!$bar = foo()), этот код работает как if (! ($bar = foo()) )


Код if (!$bar = foo()) работает как if (!$bar = foo()) забудьте о скобках. Вам самому глаза не режет?

хотя приоритет у "=" меньше чем у "!"

Давайте попробуем ещё раз.
www.php.net/manual/ru/language.operators.precedence.php
Специально для вас под табличкой примечание (напишу на русском):

Замечание:

Несмотря на то, что оператор = имеет низший приоритет, чем большинство остальных операторов, PHP все равно позволяет использовать следующую конструкцию: if (!$a = foo()), которая присваивает переменной $a результат выполнения функции foo().

Не читайте выборочно мануал. Вот из-за такого подхода, многие php-шные говнокодеры до сих пор не знают, что если не объявлять массив, а просто присвоить необъявленной переменной элемент, то она автоматически станет массивом $a=[2];.
Хотя в больших проектах лучше всё-таки обнулять.

Вы там выше о стандартах говорите. Какие к чёрту стандарты, подучите базовые вещи.
$a || $b && $c в нормальной команде этот код не пройдёт код ревью пока скобки не расставят


Вот это, наверное, просто так писали:
www.php.net/manual/en/language.operators.precedence.php

Если для таких очевидных вещей скобки ставить, ну я не знаю…

Такой вот код тоже ревью не пройдёт?
if($error_type&E_PARSE)
  return 'This is parse error';


Попросят заменить на

if($error_type==E_PARSE)
    return 'This is parse error';

? А лучше, наверное вот так:

if(((($error_type===E_PARSE))))
    return ((((string)'This is parse error'))); //Я не уверен, что это строка, пожалуй стоит проверять ещё и при каждом использовании функции

чтобы наверняка.

Ну и что это за скобочная паранойя?

Простите за сарказм.
банить сайты мы не бросим! 1488! (не воспринимайте это всерьёз =))
Немножко не то, но тоже познавательно
Всем хорошего настроения и хороших проектов!
Добавьте в закладки, пожалуйста. tsya.ru
switch (gettype($email)) 

самый волнующий момент

Информация

В рейтинге
Не участвует
Откуда
Кубинка, Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность