@prophp7

Страница 135 из 1387
Aleh
13.12.2016
14:02:47
ну точнее, непонятно как стоит делать

Viktor
13.12.2016
14:02:48
хреново что в этом говне голосовальщики не пишут комменты "нет, потому-что ...."

Aleh
13.12.2016
14:02:58
нет, потому что бьет по скорости

20% вроде терялось

Google
Sergey
13.12.2016
14:03:08
https://github.com/phplang/phack

Viktor
13.12.2016
14:04:36
20% вроде терялось
ну а пруфы то где?

Aleh
13.12.2016
14:04:40
в pr

открой и посмотри)

там вообще непонятно, что с реализацией делать

Sergey
13.12.2016
14:05:51
https://github.com/php/php-src/pull/1584 - интересно)

Aleh
13.12.2016
14:06:10
хах)

Sergey
13.12.2016
14:06:19
самое забавное что закрыто потому что нет RFC

можно подтырить и запилить RFC + реаплизацию

но в целом не уверен что это будут использовать

ибо... ну сам по сути... если у тебя есть тайпхинтинг аргументов и тайпхинтинг для возвращаемых значений - у тебя достаточно информации что бы узнать типы

проблемы только с пропертями объектов (решение - не делать публичных пропертей) и массивами (дженерики)

короч да... надо дженерики

Google
Sergey
13.12.2016
14:08:07
но я дико хочу элиасы для типов

Aleh
13.12.2016
14:08:37
а структурные типы?)

Viktor
13.12.2016
14:08:44
почитал pr, не увидел про 20% медленее...

Sergey
13.12.2016
14:08:49
структурные типы - это проще уходить из php

Aleh
13.12.2016
14:09:02
почитал pr, не увидел про 20% медленее...
https://github.com/php/php-src/pull/1797#issuecomment-226273521

Viktor
13.12.2016
14:09:20
можно подтырить и запилить RFC + реаплизацию
у меня есть такая же идея на счет коротких анонимных функций))

Sergey
13.12.2016
14:09:39
> у меня есть такая же идея на счет коротких анонимных функций)) эм... там же есть уже

https://wiki.php.net/rfc/arrow_functions

Viktor
13.12.2016
14:11:09
https://github.com/php/php-src/pull/1797#issuecomment-226273521
там чуть ниже I just micro-benchmarked property-writes in 5.4 vs 7.0.5, and property-writes became more than 200% faster in PHP 7. Why anybody would concern themselves with a 15% overhead is beyond me - that's less than 10% of a setback relative to PHP 5. It's not like the 200% increase in property write-performance made a watershed overall performance difference in the first place - surely a slight decrease in the same isn't going to do so either. так что неоднозначно

Aleh
13.12.2016
14:11:58
=> самый норм

Viktor
13.12.2016
14:12:21
=> норм, но неоднозначен изза массивов

Sergey
13.12.2016
14:12:29
ну мол что бы статическая информация о типах сохранялась но на рантайм это не влияло

Aleh
13.12.2016
14:12:29
ну вот забить на это

оставить полную совместимость т.е.

Sergey
13.12.2016
14:12:45
=> норм, но неоднозначен изза массивов
уже обсуждали 1000 раз. Выход только один - забить

короч

как насчет идеи отключать тайп хинтинг?

Viktor
13.12.2016
14:13:06
-

Google
Aleh
13.12.2016
14:13:10
да, было бы норм

Sergey
13.12.2016
14:13:21
ты в dev окружении все протестил и т.д.

Aleh
13.12.2016
14:13:25
проверка ж все равно до компайла идет

Sergey
13.12.2016
14:13:26
а потом "бац" и вырубаешь

Viktor
13.12.2016
14:13:40
если тайпхинт указан, значит передаваться должно только то, что указывается

Sergey
13.12.2016
14:13:42
и все живут счастливо

Aleh
13.12.2016
14:13:43
поидее просто байткод пыхе совать ))

он не должен закомпилится просто

Viktor
13.12.2016
14:13:59
а т.к. в пщп можно передать чо угодно... лучше не отключать :)

Sergey
13.12.2016
14:14:01
если тайпхинт указан, значит передаваться должно только то, что указывается
посмотри на python, там указать ты можешь что хочешь, на рантайм это не влияет

Viktor
13.12.2016
14:14:26
посмотри на python, там указать ты можешь что хочешь, на рантайм это не влияет
рантайм отвалится когда его попросят к объекту прибавить False

Sergey
13.12.2016
14:14:27
а т.к. в пщп можно передать чо угодно... лучше не отключать :)
чувак, вся суть статической информации о типах в том, что бы у тебя небыло такого, что кто-то передает ненужную фигню

Sergey
13.12.2016
14:14:37
у тебя не может быть в продакшене так что "все было ок а теперь не ок"

так что если ты оттестил систему с включенными тайп хинтингами - у тебя все будет хорошо и без них

Sergey
13.12.2016
14:15:12
ну статический анализатор должен тебе на это кинуть варнинг

что мол "херню какую-то тварит чувак, пофиксить надо"

Viktor
13.12.2016
14:15:30
шучу конечно, но это лишь пример динамического инстанцирования) и ведь у тебя может быть if(rand())

Sergey
13.12.2016
14:15:40
повторюсь - написать кучу красный предупреждений в духе "только тем кто знают что делают"

шучу конечно, но это лишь пример динамического инстанцирования) и ведь у тебя может быть if(rand())
какая разница? статический анализатор проверит обе ветки условий

Google
Viktor
13.12.2016
14:16:06
да всем похуй на них. с какой там версии E_NOTICE валятся?

Aleh
13.12.2016
14:16:37
тем кому похер не юзают тайпхинты

Viktor
13.12.2016
14:16:54
какая разница? статический анализатор проверит обе ветки условий
это какой же статический анализатор может однозначно детектить хрень которую кто-то наговнокодил?

Sergey
13.12.2016
14:17:27
это какой же статический анализатор может однозначно детектить хрень которую кто-то наговнокодил?
все прсто. Если анализатор не может разобраться - он может выкинуть тебе варнинг что мол "я тут не разобрался, сделай чего ибо потом дебажить будешь"

в PHP только дженериков не хватает что бы все было збс

https://github.com/etsy/phan

Viktor
13.12.2016
14:17:50
$a = $_POST['x'] $b = new $a(); foo($b); где foo(Type $x); это ж хер разрулишь :)

Sergey
13.12.2016
14:17:51
неплохой анализатор

Sergey
13.12.2016
14:18:06
$a = $_POST['x'] $b = new $a(); foo($b); где foo(Type $x); это ж хер разрулишь :)
блин чувак, этот код не пройдет код ревью банально)

Admin
ERROR: S client not available

Aleh
13.12.2016
14:18:22
b дается тип mixed или unknown и далее ты должен доказать, что это нужный тебе тип

Sergey
13.12.2016
14:18:23
а вообще да, тут @mkusher явно авторитетнее меня)

Aleh
13.12.2016
14:18:24
instanceof

или типа того

Viktor
13.12.2016
14:18:43
instanceof
чем он лучше тайпхинта?

Aleh
13.12.2016
14:18:49
ты должен доказать

Viktor
13.12.2016
14:18:53
Aleh
13.12.2016
14:18:58
if ($a instanceof Type) foo($a);

Viktor
13.12.2016
14:19:11
ты должен доказать
зачем тогда вообще тайпхинты, если я что-то должен доказывать?

Google
Sergey
13.12.2016
14:19:16
....

короч это бесполезно

Aleh
13.12.2016
14:19:25
чтобы описать интерфейс

Sergey
13.12.2016
14:19:51
тайпхинтинг нужен тем, кто хочет добавить прекондишены и посткондишены для интерфейса

а те кто хотят динамически инстанцировать классы - им такое не надо

Viktor
13.12.2016
14:21:30
либо у меня instanceof не вернет true и будет ошибка, либо нативные средства пшп вернут ошибку... иначе получается следующее: — ура, мы внедрили строгую проверку типов чтобы вы не пихали всякое говно! — ... — сорян, проверка тайпхинтов это дополнительный оверхед, поэтому отключайте их и оборачивайте все в if instanceof!

Sergey
13.12.2016
14:23:10
> и оборачивайте все в if instanceof! эм...

чта?

Aleh
13.12.2016
14:23:19
тайпхинты в рантайме вообще говно

ты хочешь видеть проблему без запуска кода

Sergey
13.12.2016
14:23:30
1. это возвращает оверхэд от тайпхинтов 2. это бред

Viktor
13.12.2016
14:23:32
» if ($a instanceof Type) foo($a); если писать так - нахрена вообще тайпхинты?

Aleh
13.12.2016
14:23:43
тебе нужен любой пруф типа

Sergey
13.12.2016
14:24:51
» if ($a instanceof Type) foo($a); если писать так - нахрена вообще тайпхинты?
1. это единственный способ в PHP задать статическую информацию о типах (та которая известна до запуска кода). 2. это единственный способ "уронить" скрипт при несоблюдении прекондишена интерфейса. 3. для dev режима штука полезная, как например ассерты

Aleh
13.12.2016
14:24:53
ты же понимаешь, в чем разница кода который я написал и тайпхинта?

Sergey
13.12.2016
14:25:02
но в продакшене в рантайме тайпхинтинг должен быть отключен

Aleh
13.12.2016
14:25:03
ты используешь тайпхинт в своей динамике

когда из поста тянешь

и это буквально единственный случай

ты тайпхинты вообще не для проверки используешь, а для описания интерфейса)

Viktor
13.12.2016
14:25:44
и это буквально единственный случай
это лишь пример динамического инстанцирования чего либо

Aleh
13.12.2016
14:25:45
проверка это побочный эфект

Artem
13.12.2016
14:25:58

Страница 135 из 1387