Юрий
И куча всего тоже
Юрий
Но все живы вроде
Юрий
Вон щас each отвалится, там вообще куча легаси
Golodnyi
а..ну да, я понял, strlen возвращает длинну в байтах, в то время как mb_strlen по сути на 2 умножает, и при работе с бинарными данными код юзающий strlen сломается...не хорошо
Юрий
Поискал по гитхабу - 18,3 миллиона вхождений each
Юрий
Этож сколько легаси
Artem
нет никаких проблем в явном использованиии mb_ для строк, ка кмне кажется. Это не стоит ломания совместимости
Юрий
И в 7.2 его убивают
Юрий
че такое each?
Функция)
Artem
each хотя бы можно автоматом найти и поправить, а вот поиском по strlen() ты сразу не сможешь понять есть тут проблема или нет. Надо будет рабираться что именно в коде имеется в виду. Это прям очень ломающее изменение
Golodnyi
первый раз прочел об этой функции)
Юрий
Как ты автоматом на форич заменишь?
Golodnyi
$foo = array("Robert" => "Bob", "Seppo" => "Sepi"); $bar = each($foo); print_r($bar); Array ( [1] => Bob [value] => Bob [0] => Robert [key] => Robert ) я даже не понимаю что оно делает
Юрий
Там весь код проверить надо будет как минимум
Artem
а ещё будет проблема с индексацией строк по байтам. Это тоже поменять?
invariance
кто-нибудь объясните, откуда в ларке официальная заплатка
invariance
и почему тупо не переделают фреймворк коробочный
Artem
Там весь код проверить надо будет как минимум
ты нашёл each() - это уже проблема (на самом деле с самого начала было понятно, что использование внутренних итераторов - зло). Сразу ясно что надо править
invariance
Что за заплатка
http://laravel-boilerplate.com/
Юрий
а ещё будет проблема с индексацией строк по байтам. Это тоже поменять?
Ну вот в 7.2/8 точно внесут работу с отрицательными индексами массивов. Типа если ты задал -7 элемент, то сейчас следующий - нулевой, а будет -6. Представляешь сколько скрытого легаси упасть может?
Юрий
И что, оставлять то поведение какое сейчас?
Юрий
Или вводить новый array?
Юрий
http://laravel-boilerplate.com/
Хм, не видел, спасибо)
Юрий
Или полагались на такое поведение
Юрий
Как и описанный тобой пример с индексами строк
Artem
ССЗБ
Artem
строки всегда были бинарными, изменить это - это сломать вообще всё. Именно поэтому и не стали это делать
Golodnyi
урок на всю жизнь)
Юрий
И вот сидишь думаешь заюзать сразу mb или у тебя всегда будет только простой текст не требующий этого
Artem
меня это не парит, например. Работаешь с текстом - mb_, работаешь с байтами - без mb_
Golodnyi
ниче тут думать не надо, всегда юзаешь mb, кроме тех случаев, когда ты ждешь не юникод, а такие ситуации щя редки, в основном тока когда с бинарником работаешь
Юрий
меня это не парит, например. Работаешь с текстом - mb_, работаешь с байтами - без mb_
А что в пхп чаще юзается по твоему, работа с байтами или юникодом?)
Golodnyi
с юникодом
Artem
не важно что чаще, важно, что и так и так нужно работать
Юрий
Почему тогда явно большая группа должна страдать из-за легаси второй группы
Golodnyi
поэтому mb надо юзать как дефолтный вариант, а без mb как исключение
Artem
я вот чаще с бинарём работаю, точнее, чаще всего мне не важна кодировка потому что я не работаю со строками посимвольно
Golodnyi
потому что те кто работает с бинарниками, у них ПО чуть серьезнее, чем те кто хомпейджи делает)
Artem
ну сам посуди, так ли часто нужно работать с символами? В основном это обрезание строки до какой-то длины в символах + поиск без учёта регистра / регулярки
Aleserche
вот юникод бы запили нормально, было бы замечательно. А пока страдаем дальше
Golodnyi
часто нужна, поверь
Artem
ну приведи пример
Golodnyi
просто не во всех задачах)
Golodnyi
сокет серверы
Golodnyi
там общаются обычно бинарем
Artem
так я о чём и говорю, зачем там символы, там байтов достаточно
Golodnyi
всякое говно, когда ты читаешь какие нить логи, виндового ПО, который в cp1251 или в чем нить еще более ужасном
Golodnyi
так я о чём и говорю, зачем там символы, там байтов достаточно
а, ты в обратную сторону? Считают количество символов в юникоде в 500 раз чаще, чем читают бинари)
Golodnyi
mb_ более востребованные функции, если посчитать их выхов на гитхабе, без mb менее востребованные, но они обычно в более серьезном ПО вызываются
Golodnyi
либо в лютом легаси, когда интернеты с cp1251 были)
Artem
а, ты в обратную сторону? Считают количество символов в юникоде в 500 раз чаще, чем читают бинари)
не важно что читают и что пишут, важно как работают. Не зная ничего про кодировку можно прекрасно жить, пока не становится нужно получить N-ный символ или обрезать строку или найти подстроку, используя коллейшн. А это всё же не такие частые операции
Юрий
Про строки. В 7.2 вроде еще пачка новых функций для них - str_begin/str_end и str_ibegin/str_iend соответственно
Юрий
Скоро строковых функций будет больше чем остальных вместе взятых
Artem
ну ок. У меня нечастые, мне нужно только обрещать строки до нужной длины (и то нечасто) и искать по регуляркам без учёта регистра (ещё более нечасто)
Golodnyi
ну бывает надо найти подстроку, чтоб не юзать более тяжелые регулярки
Golodnyi
да там тыщи вариантов что надо от строковых функций и в тот момент когда ты их вызываешь, тебе надо четко знать, там юникод или нет
Artem
если именно точную подстроку, то с этим и обычный strpos() справится, если кодировка utf-8 или однобайтовая
Golodnyi
не знаю на сколько оно справится, в любом случае, если там юникод, а ты заюзаешь strpos, даже если он сработает верно, ты введешь в заблуждение других программистов, которые решат что источник отдает не юникод и начнет дальше над данными применять не mb функции и тогда точно начнутся проблемы
Николай
а причем тут браузер)
Николай
у всего таймаут есть
Artem
тут я согласен, как уже выше написал - если работа с текстом, то сразу mb_ и всё. И никаких особых неудобств это не доставляет. А если кто ошибся, то ловится это на ревью очень просто
Николай
Golodnyi
твой монолог не очевиден
Artem
можно наверное даже статический анализ натравить, если в проекте вообще никогда с бинарём не нужно работать
Golodnyi
таймаут есть у всего, подтверждаю)
Николай
ок, попробую ещё раз
Николай
Николай
@fairhypo у консольной команды разве таймаут есть? Это же не браузер вроде? или я ошибаюсь?
Николай
а причем тут браузер)
Николай
у всего таймаут есть
Юрий
Ну вообще есть. php_cli со своим конфигом)