Pull to refresh

Comments 38

UFO just landed and posted this here
Выделение функционала фильтрации моделей в отдельную сущность. Наверное, это может быть полезно если какая-то сложная логика фильтрации или просто много полей для фильтрации. Позволяет разгрузить контроллеры и модели от лишнего кода.

В общем вроде бы прикольно, но вроде особо то и не надо ;)

"==>" все же уродство как по мне.


Идеально, конечно, ($x) => $x + $y, но тут см. описанные в rfc проблемы с неоднозначностью синтаксиса и сложностями реализации в рамках используемого парсера.


Из оставшихся вариантов мне наиболее симпатичен \($x) => $x + $y: "\" как обозначение lambda уже используется в других языках, невозможно ни с чем спутать в хитровложенных конструкциях, просто для реализации, и, кажется, в тривиальном случае с одним аргументом нет проблем с реализацией сокращенного синтаксиса: \$x => $x + $y.

Дело в том, что если вы захотите добавить эту лямбду \$x => $x + $y (как и \($x) => $x + $y) в массив, то возникнет неоднозначность при парсинге.

Где неоднозначность? \($x) ключом массива быть не может, без стрелочки и тела это ничего не значит. Если бы речь шла о PHP5, я бы еще понял проблему, но в семерке-то AST как-никак.


Бэкслеш сейчас разделитель неймспейсов, переменные и прочую динамику там использовать нельзя (в явном виде, по крайней мере), соответственно, комбинации \( и \$ это однозначно лямбды.

Да, вы совершенно правы. В минуту помрачения подумалось про разделитель пространства имен.
Однако не соглашусь по поводу симпатичности, поскольку обратная черта — это: разделитель пространств имен; экранирующий символ; перекликается с &$x, являясь, по сути, ключевым словом, а не модификатором доступа; то же самое относительно унарных операторов.

В Haskell нормально смотрится. :-)

UFO just landed and posted this here

Как ниже писал SerafimArts, потому что очень похоже на вызов метода/получения поля у объекта. Попробуй разглядеть волнистая ли линия при беглом просмотре.


$a->$b;
$a~>$b;
UFO just landed and posted this here

Не просто можно, а нужно! Имеено поэтому лучшие шрифты для разработки делают эти символы максимально отличающимися. На хабре в режиме code уже видны отличия.


0 O
I l |

А если взять DejaVu Sans Mono, то разница между этими символами заметка ещё сильнее.

UFO just landed and posted this here
"\" как обозначение lambda уже используется в других языках

Это, например, в каких? Ну, кроме Haskell.
Можно тогда -> как в Java, и путаницы меньше.
Эм, нельзя. Потому что это вызов метода/получение поля у объекта.

$a->$b; // Это лямбда или вызов поля $b у объекта $a?

Самый нормальный вариант)

Надо же… век живи — век учись. Про фигурные скобки в массивах узнал только благодаря этому дайджесту. Мне искренне интересно, использует ли это кто либо в больших проектах?
Собственно противники апеллируют к тому, что используют разный синтаксис для визуального разделения доступа к массиву и к строке.
I personally use it because I like to quickly tell if I am doing an operation on a string or array, it is eye candy and makes a lot of sense. I think if anything the two syntaxes should be decoupled instead.

www.php.net/manual/en/language.types.string.php#language.types.string.substr
Internally, PHP strings are byte arrays. As a result, accessing or modifying a string using array brackets is not multi-byte safe, and should only be done with strings that are in a single-byte encoding such as ISO-8859-1.

Нельзя просто так взять, и обратиться к символу строки как к элементу массива.
Разве кто-то ещё разрабатывает проекты на однобайтовых кодировках?
Можно. Существуют проекты, которые используют поток байтов, а не буквенные символы из строки.

Ну вот буквально позавчера развлекался с чтением/записью опкеша напрямую из PHP и там вообще нет намёка на mb_x, а место под структуры резервируется строго в единицах объёма памяти. А сегодня писал функцию, которая под байтовому сдвигу получает линию и позицию в тексте и тот факт, что отрежет половину utf-чара не должен волновать особо.

Ну т.е. да, на всяких типовых проектах оно мало где применяется, а в библиотечном коде сплошь и рядом. Вот такие вот дела.
что-нибудь типа такого

habr.com/ru/post/315430/#comment_9915398

Код php использует официальный протокол Меркуриев и идеи от дядьки, код которого очень помог разобраться в протоколе. В моём примере пароль админа в счётчике заменён на стандартный. По умолчанию адрес счётчика — это последние 2 или 3 цифры в серийном номере. Каждая moxa и её порт опрашиваются параллельно. Запрашиваем по одному все счётчики, висящие на одном порту moxa.

Собственно сам код
Ну так я поэтому и не стал рубить с плеча. В частных случаях может быть полезно, не спорю.
Но это опасный функционал, с которым очень легко ошибиться. Тесты код пройдёт, а на живом проекте через полгода лавиной пойдут ошибки, когда какой-нибудь эстет напишет «Résumé».
[сарказм]
Он еще жив что ли?
[/сарказм]
SamDark уже давно пора перейти в стан laravel или symfony и прокачивать их =)

Yii как будто бы уходит со сцены как в свое время codeigniter.

Кстати, мало кем замеченное, но очень знаковое событие — из документации в массовом порядке удаляются все отсылки к PHP 4. Фактически там, где встречались фразы типа «До PHP 5, после PHP 5» остается просто «В PHP».
не знаю как донести до людей «делающих мануал по ПХП», исправьте стили, все остальные — извините за оффтоп
А что конкретно с ними не так?
1. Какой мануал? Тот, который php.net? Да вроде все нормально там со стилями
2. Если обнаружили ошибку, то на каждой странице руководства есть кнопка
все файлы на странице www.php.net/download-docs.php содержат HTML вместо CSS, особенно это раздражает в CHM формате.
упс, php_manual_ru.tar.gz исправился
php_manual_ru.chm пока нет
спасибо, значит услышали
Sign up to leave a comment.

Articles