Комментарии 13
поздравляю, вы изобрели Data Transfer Object
вот только изобрели не до конца. имеет смысл сразу и использовать созданный класс, а не пытаться обмануть IDE.
И самое главное, смысл не в том, что так надо делать всегда, а в том, что если других вариантов нет (ограничены по времени и т.д. и т.п.), то можно применить эту технологию.
смысл как раз в том, что описывать данные классами стоит как можно чаще.
ну без фанатизма, но вы поймите, массивы это как раз от бедности, когда нужно быстро и можно тяп-ляп. массивы в PHP это очень мощный инструмент и использовать его можно абсолютно по-разному, поэтому и используют его кто на что горазд. но если мы хотим, чтоб проект был поддерживаемым, а люди, с ним работающие, не себе рвали волосы в труднодоступных местах, то использование DTO это очень замечательная практика.
посмотреть хорошие практики, как это реализовать и использовать, можно например, тут - https://github.com/spatie/data-transfer-object
Lost case (c)
Что бы применить DTO наверное надо весь битрикс переписывать, к сожалению. Я нивкоем случае не говорю что решение с ПхпДок - лучше. Я говорю про то - что там уже ничего не сделаешь...
Вы можете массивы битрикса в свои dto оборачивать и работать с ними. И когда надо обратно в массив, добивать в каждом dto метод toArray. Т.е. dto может реализовывать даже https://www.php.net/manual/en/class.jsonserializable.php
В самой новой версии PHPStorm (2021.2 EAP) есть поддержка вложенных array shapes https://blog.jetbrains.com/phpstorm/2022/02/phpstorm-2022-1-eap-3/
Вы сейчас изобрели DTO, или я не уловил суть?
А почему нельзя просто использовать #[ArrayShape]?
как ты можешь называть себя программистом, работая с ссаным битриксом?
А как тестировать эти штуки и насколько это будет удобно? Вопросы к памяти тоже остались. Вы проводили тесты по объему памяти на примере больших данных? Что это дает кроме удобства (субъективно)?
Как сделать объекты из массивов в PHP с подсказками?