
Golodnyi
05.05.2017
08:58:40
final не закрывает класс, final запрещает его модификацию
если я еще в своем уме, что не факт
щя пхп в дикую функциональщину уведут)

Google

Юрий
05.05.2017
09:00:48
Вот это и волнует

Golodnyi
05.05.2017
09:01:03
ну наверно в каком нить финансовом ПО, это полезно, чтоб какие то канстантные параметры типа текущего курса случайно не сломать

Юрий
05.05.2017
09:01:17
То у них нет релизов несколько лет, то за год три версии пхп прогнали

F01134H
05.05.2017
09:01:29

Golodnyi
05.05.2017
09:02:08

Юрий
05.05.2017
09:02:18
И странным образом забили на unicode) обещания выпилить mb_ так ими и остались.

F01134H
05.05.2017
09:02:38

Golodnyi
05.05.2017
09:02:41
да, юникод был бы полезнее иммутбл

F01134H
05.05.2017
09:03:10

Artem
05.05.2017
09:03:25

Юрий
05.05.2017
09:03:44

Golodnyi
05.05.2017
09:03:50

Google

Юрий
05.05.2017
09:04:21
А че, в пхп нынче модно с бинарниками работать в целом?)

Artem
05.05.2017
09:04:27

Golodnyi
05.05.2017
09:04:32

Юрий
05.05.2017
09:04:37

Golodnyi
05.05.2017
09:04:45

Юрий
05.05.2017
09:05:28

Artem
05.05.2017
09:05:29
С конфига юникод
старый код сломается, потому что может закладываться на то, что strlen(str) возвращает размер в байтах

Юрий
05.05.2017
09:05:32
В этом и была соль
mysql_ тоже ломалось
И куча всего тоже
Но все живы вроде
Вон щас each отвалится, там вообще куча легаси

Golodnyi
05.05.2017
09:06:37
а..ну да, я понял, strlen возвращает длинну в байтах, в то время как mb_strlen по сути на 2 умножает, и при работе с бинарными данными код юзающий strlen сломается...не хорошо

Юрий
05.05.2017
09:07:02
Поискал по гитхабу - 18,3 миллиона вхождений each
Этож сколько легаси

Artem
05.05.2017
09:07:10
нет никаких проблем в явном использованиии mb_ для строк, ка кмне кажется. Это не стоит ломания совместимости

Юрий
05.05.2017
09:07:12
И в 7.2 его убивают

Golodnyi
05.05.2017
09:07:38

Google

Юрий
05.05.2017
09:07:50

Artem
05.05.2017
09:08:37
each хотя бы можно автоматом найти и поправить, а вот поиском по strlen() ты сразу не сможешь понять есть тут проблема или нет. Надо будет рабираться что именно в коде имеется в виду. Это прям очень ломающее изменение

Golodnyi
05.05.2017
09:08:47
первый раз прочел об этой функции)

Юрий
05.05.2017
09:09:06
Как ты автоматом на форич заменишь?

Golodnyi
05.05.2017
09:09:25
$foo = array("Robert" => "Bob", "Seppo" => "Sepi");
$bar = each($foo);
print_r($bar);
Array
(
[1] => Bob
[value] => Bob
[0] => Robert
[key] => Robert
)
я даже не понимаю что оно делает

Юрий
05.05.2017
09:09:25
Там весь код проверить надо будет как минимум

Artem
05.05.2017
09:09:27
а ещё будет проблема с индексацией строк по байтам. Это тоже поменять?

F01134H
05.05.2017
09:09:27
кто-нибудь объясните, откуда в ларке официальная заплатка
и почему тупо не переделают фреймворк коробочный

Юрий
05.05.2017
09:09:44

Artem
05.05.2017
09:10:43

F01134H
05.05.2017
09:10:49

Юрий
05.05.2017
09:11:35
И что, оставлять то поведение какое сейчас?
Или вводить новый array?

Artem
05.05.2017
09:13:04

Юрий
05.05.2017
09:13:20
Или полагались на такое поведение

Google

Юрий
05.05.2017
09:13:28
Как и описанный тобой пример с индексами строк

Artem
05.05.2017
09:13:29
ССЗБ

Golodnyi
05.05.2017
09:13:58

Artem
05.05.2017
09:14:09
строки всегда были бинарными, изменить это - это сломать вообще всё. Именно поэтому и не стали это делать

Golodnyi
05.05.2017
09:14:10
урок на всю жизнь)

Юрий
05.05.2017
09:14:53
И вот сидишь думаешь заюзать сразу mb или у тебя всегда будет только простой текст не требующий этого

Artem
05.05.2017
09:15:23
меня это не парит, например. Работаешь с текстом - mb_, работаешь с байтами - без mb_

Golodnyi
05.05.2017
09:15:47
ниче тут думать не надо, всегда юзаешь mb, кроме тех случаев, когда ты ждешь не юникод, а такие ситуации щя редки, в основном тока когда с бинарником работаешь

Юрий
05.05.2017
09:16:38

Admin
ERROR: S client not available

Golodnyi
05.05.2017
09:16:45
с юникодом

Artem
05.05.2017
09:16:55
не важно что чаще, важно, что и так и так нужно работать

Юрий
05.05.2017
09:17:04
Почему тогда явно большая группа должна страдать из-за легаси второй группы

Golodnyi
05.05.2017
09:17:05
поэтому mb надо юзать как дефолтный вариант, а без mb как исключение

Artem
05.05.2017
09:17:26
я вот чаще с бинарём работаю, точнее, чаще всего мне не важна кодировка потому что я не работаю со строками посимвольно

Golodnyi
05.05.2017
09:17:27
потому что те кто работает с бинарниками, у них ПО чуть серьезнее, чем те кто хомпейджи делает)

Artem
05.05.2017
09:18:41
ну сам посуди, так ли часто нужно работать с символами? В основном это обрезание строки до какой-то длины в символах + поиск без учёта регистра / регулярки

Aleserche
05.05.2017
09:18:54
вот юникод бы запили нормально, было бы замечательно. А пока страдаем дальше

Google

Golodnyi
05.05.2017
09:19:02
часто нужна, поверь

Artem
05.05.2017
09:19:11
ну приведи пример

Golodnyi
05.05.2017
09:19:14
просто не во всех задачах)
сокет серверы
там общаются обычно бинарем

Artem
05.05.2017
09:19:49
так я о чём и говорю, зачем там символы, там байтов достаточно

Golodnyi
05.05.2017
09:20:03
всякое говно, когда ты читаешь какие нить логи, виндового ПО, который в cp1251 или в чем нить еще более ужасном
mb_ более востребованные функции, если посчитать их выхов на гитхабе, без mb менее востребованные, но они обычно в более серьезном ПО вызываются
либо в лютом легаси, когда интернеты с cp1251 были)

Artem
05.05.2017
09:21:58

Юрий
05.05.2017
09:22:07
Про строки. В 7.2 вроде еще пачка новых функций для них - str_begin/str_end и str_ibegin/str_iend соответственно
Скоро строковых функций будет больше чем остальных вместе взятых

Golodnyi
05.05.2017
09:22:27

Artem
05.05.2017
09:23:48
ну ок. У меня нечастые, мне нужно только обрещать строки до нужной длины (и то нечасто) и искать по регуляркам без учёта регистра (ещё более нечасто)

Golodnyi
05.05.2017
09:24:28
ну бывает надо найти подстроку, чтоб не юзать более тяжелые регулярки
да там тыщи вариантов что надо от строковых функций и в тот момент когда ты их вызываешь, тебе надо четко знать, там юникод или нет

Artem
05.05.2017
09:25:26
если именно точную подстроку, то с этим и обычный strpos() справится, если кодировка utf-8 или однобайтовая

Golodnyi
05.05.2017
09:26:56
не знаю на сколько оно справится, в любом случае, если там юникод, а ты заюзаешь strpos, даже если он сработает верно, ты введешь в заблуждение других программистов, которые решат что источник отдает не юникод и начнет дальше над данными применять не mb функции и тогда точно начнутся проблемы

Neo
05.05.2017
09:27:58
а причем тут браузер)
у всего таймаут есть

Artem
05.05.2017
09:28:03
тут я согласен, как уже выше написал - если работа с текстом, то сразу mb_ и всё. И никаких особых неудобств это не доставляет. А если кто ошибся, то ловится это на ревью очень просто