@laravel_pro

Страница 453 из 2014
Golodnyi
05.05.2017
08:58:40
final не закрывает класс, final запрещает его модификацию

если я еще в своем уме, что не факт

https://wiki.php.net/rfc/immutability
да, тут прям про иммутбл, не изменение состояния объекта, когда объект по сути это константа

щя пхп в дикую функциональщину уведут)

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
final не закрывает класс, final запрещает его модификацию
ну дык для иммутабельности класса разве не подходит?

Golodnyi
05.05.2017
09:02:08
ну дык для иммутабельности класса разве не подходит?
нет, это ваще другой принцип, final запрещает добавлять новые методы в класс и члены класса, а иммутабл запрещает менять значения членов класса, которые были заданы при создании объекта

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

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

нуу... Можно там константы налепить :D
можно, но объекты-константы удобнее, если они тебе реально нужны

F01134H
05.05.2017
09:03:10
И странным образом забили на unicode) обещания выпилить mb_ так ими и остались.
давно уже сказали, что переводить на юникод - полная жопа и этого не будет

Artem
05.05.2017
09:03:25
И странным образом забили на unicode) обещания выпилить mb_ так ими и остались.
ну а если мне надо с бинарём работать, то что? Хрень это и не нужно

Юрий
05.05.2017
09:03:44
давно уже сказали, что переводить на юникод - полная жопа и этого не будет
Ну это причина отказа от 6, но про выпилинг мб постепенный и слова не было

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

Artem
05.05.2017
09:04:27
а че бинари имеют отношения к кодировкам?
если просто заменить все функции работы со строками на аналоги с mb_, то да. Какая будет дефолтная кодировка?

Golodnyi
05.05.2017
09:04:32
Ну это причина отказа от 6, но про выпилинг мб постепенный и слова не было
выпилить mb вообще страшно, этож сколько сразу легаси появится ^_^

Golodnyi
05.05.2017
09:04:45
А че, в пхп нынче модно с бинарниками работать в целом?)
у меня есть сервер бинарного протокола на пхп)

Юрий
05.05.2017
09:05:28
если просто заменить все функции работы со строками на аналоги с mb_, то да. Какая будет дефолтная кодировка?
Но им никто не мешает добавить префикс или параметр указывающий на желаемую кодировку

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 его убивают

Google
Юрий
05.05.2017
09:07:50
че такое each?
Функция)

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

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

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
кто-нибудь объясните, откуда в ларке официальная заплатка

и почему тупо не переделают фреймворк коробочный

Artem
05.05.2017
09:10:43
Там весь код проверить надо будет как минимум
ты нашёл each() - это уже проблема (на самом деле с самого начала было понятно, что использование внутренних итераторов - зло). Сразу ясно что надо править

F01134H
05.05.2017
09:10:49
Что за заплатка
http://laravel-boilerplate.com/

Юрий
05.05.2017
09:11:35
а ещё будет проблема с индексацией строк по байтам. Это тоже поменять?
Ну вот в 7.2/8 точно внесут работу с отрицательными индексами массивов. Типа если ты задал -7 элемент, то сейчас следующий - нулевой, а будет -6. Представляешь сколько скрытого легаси упасть может?

И что, оставлять то поведение какое сейчас?

Или вводить новый array?

http://laravel-boilerplate.com/
Хм, не видел, спасибо)

Юрий
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
меня это не парит, например. Работаешь с текстом - mb_, работаешь с байтами - без mb_
А что в пхп чаще юзается по твоему, работа с байтами или юникодом?)

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 или в чем нить еще более ужасном

так я о чём и говорю, зачем там символы, там байтов достаточно
а, ты в обратную сторону? Считают количество символов в юникоде в 500 раз чаще, чем читают бинари)

mb_ более востребованные функции, если посчитать их выхов на гитхабе, без mb менее востребованные, но они обычно в более серьезном ПО вызываются

либо в лютом легаси, когда интернеты с cp1251 были)

Artem
05.05.2017
09:21:58
а, ты в обратную сторону? Считают количество символов в юникоде в 500 раз чаще, чем читают бинари)
не важно что читают и что пишут, важно как работают. Не зная ничего про кодировку можно прекрасно жить, пока не становится нужно получить N-ный символ или обрезать строку или найти подстроку, используя коллейшн. А это всё же не такие частые операции

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

Скоро строковых функций будет больше чем остальных вместе взятых

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_ и всё. И никаких особых неудобств это не доставляет. А если кто ошибся, то ловится это на ревью очень просто

Страница 453 из 2014