The Ant
ну да
The Ant
симфа свой ууид в резолвере сама конвертит
The Ant
насчет рамзи хз
Павел
Ну я вот к чему то такому пришел да, но только без во и понял что какой то заеп
Павел
симфа свой ууид в резолвере сама конвертит
Ну вот наверное в этом я пролетел
Kirill
3 строчки кода, где 2 из них - это ифчик и закрывающая фигурная скобка + 1 на регистрацию
Kirill
как и dotenv, кстати
The Ant
3 строчки кода, где 2 из них - это ифчик и закрывающая фигурная скобка + 1 на регистрацию
10 сущностей 10 резолверов, 30 строчек кода 😄 Хотя понятно что можно универсальный сделать, но все же, это зависимости, это сопровождение
The Ant
потому что симфони ююид - помойка
почему? свою функцию выполняет вроде
Kirill
почему? свою функцию выполняет вроде
ну как тебе сказать... туда даже клок не засунуть)
The Ant
клок это что?
Kirill
интерфейса тоже нет
Kirill
Kirill
да и код у рамси намного качественнее
Kirill
Как тебе такое?)
Kirill
https://github.com/symfony/uid/blob/6.3/UuidV8.php
Kirill
реализация полностью основывается на абстрактном классе и доверяет ему логику
Kirill
вот, для сравнения: https://github.com/symfony/uid/blob/6.3/UuidV3.php
The Ant
https://github.com/symfony/uid/blob/6.3/UuidV8.php
че там? я сильно в кишках не копался :D 4-ку создают с пометкой версии 8? :D
Kirill
нет, там тупо стоит тайп
Kirill
а вся логика внутри абстрактного класса, типа if (type === 3) { ... } elseif (type === 8) { ... }
Павел
огонек)
Kirill
но это ещё ничего, вот dotenv...
Kirill
причём есть замечательный vlucas/dotenv, который на голову выше и мощнее говнокода симфонёвого и появился намного раньше
The Ant
а вся логика внутри абстрактного класса, типа if (type === 3) { ... } elseif (type === 8) { ... }
честно говоря, мне как программисту абсолютно фиолетово что там внутри либы. Ровно до тех пор, пока она не заставит меня залезть внутрь. Если либа не заставляет меня лезть внутрь, это хорошая либа. А с какими рюшечками там код написан пофигу абсолютно )
Kirill
а как разработчик - так или иначе надо копаться в кишках и оценивать риски, когда и на каких кейсах этот чёртов автомобиль компонент поломается
Kirill
в противном случае - проще запилить битрикс и не парить мозг, свистоперделки есть - этого достаточно +)))
Kirill
Ну сравнение так себе
та это классика жеж, не моё сравнение
Павел
та это классика жеж, не моё сравнение
Ну к тому, чтобы хорошо водить, не обязательно знать внутренности автомобиля. И это даже мало что даст к навыкам именно езды. А вот копаться в чужом коде и оценивать - это + к твоим профессиональным навыкам программиста.
The Ant
а как разработчик - так или иначе надо копаться в кишках и оценивать риски, когда и на каких кейсах этот чёртов автомобиль компонент поломается
у нас разные взгляды на хороший софт видимо. Для меня хороший софт, это который не ебёт мне голову, и не заставляет лезть куда-то дальше документации. Битрикс кстати хороший продукт, с точки зрения пользователя
Павел
Солашусь опять же с Муравьем, что мы на то либы и берем, чтобы работать с абстракцией готовой
Kirill
и оценивать что заюзать
Kirill
например, даже для строк лучше вместо symfony/strings заюзать (тьфу-тьфу-тьфу) компонент из ларавельки, просто потому что он работает намного лучше и быстрее. И написан не намного хуже
Павел
здрасть, симфоня как раз и копаться в коде, пилить и костылить всякое)
Так я и говорю, копаться в коде - полезно, копаться в машине для навыков езды - почти бесполезно
Павел
Мы как бы и есть механики, а не водители :)
The Ant
крч, кому шашечки, а кому поковыряться 😄
The Ant
насчет клока не понял тоже, если клок локальное время (судя по пср), а ууид генерит по текущему времени метку, то какая разница, есть там клок или нет, если ровно тот же самый результат достигается?
The Ant
может я невнимательно читал пср? но там как раз про текущее время
Павел
может я невнимательно читал пср? но там как раз про текущее время
ты реализацию можешь подсунуть по солнечным часам)
Kirill
насчет клока не понял тоже, если клок локальное время (судя по пср), а ууид генерит по текущему времени метку, то какая разница, есть там клок или нет, если ровно тот же самый результат достигается?
Ок, вот тебе пример по рандому: 1) симфони: https://github.com/symfony/uid/blob/6.3/UuidV4.php#L26 2) рамси: https://github.com/ramsey/uuid/blob/4.x/src/UuidFactory.php#L360 Вопрос, как замокать UUID4, чтобы его генерация была предсказуема для тестов?
Kirill
Мне кажется, ответ сразу же по коду очевиден
Kirill
тоже самое и с UUID7, который основан на метке времени
The Ant
ты реализацию можешь подсунуть по солнечным часам)
у интерфейса клока ровно один метод: now() - текущее время
Kirill
который можно замокать)
Павел
Хочешь засунь туда now \DateTime() а хочешь $apiMarsTime->getNowInMars()
Kirill
К слову, в симфони для даты закостылен отдельный метод
Kirill
Отличный код, который читается слёту, кстати
Kirill
https://github.com/symfony/uid/blob/6.3/UuidV7.php#L52-L113
Kirill
microtime внутри него меня особо радует)
Kirill
ну типа вроде и можно передать время, но как бы и нет
Kirill
и чисто теоретически там может быть бесконечный цикл и всё повиснет нахрен, кстати
Kirill
не, чтоб понимать, пользоваться-то можно, благо не так плохо, как код из Yii, но когда есть более качественная и популярная (в 6 раз) альтернатива от рамси, то нафига тянуть этот пакет?
The Ant
потому что он работает без лишних надстроек )
The Ant
зачем нам фреймворк, если мы не пользуемся его фичами?
Kirill
так оно же не идёт из коробки
Kirill
ну если ты только не symfony/symfony ставишь)))
The Ant
так оно же не идёт из коробки
прописан в symfony/doctrine-bridge, можно сказать из коробки )
The Ant
https://github.com/ramsey/uuid-doctrine этим пользуетесь?
Kirill
прописан в symfony/doctrine-bridge, можно сказать из коробки )
хз, у меня и доктрина и симфа, но этого компонента нет
Kirill
прописан в symfony/doctrine-bridge, можно сказать из коробки )
https://packagist.org/packages/doctrine/doctrine-bundle а тут нету, кстати)))
Kirill
И в бридже тоже нету https://packagist.org/packages/symfony/doctrine-bridge
Kirill
Вон есть же
что, symfony/uid есть?
The Ant
В этом компоненте прописан тип для доктрины, симфони уид
Kirill
ничего не понял, в каком компоненте прописана зависимость на symfony/uid?
Kirill
и причём тут это скрин, где зависимость на бридж доктрины
The Ant
https://github.com/symfony/doctrine-bridge/tree/6.3/Types
The Ant
вот
Kirill
вот
где? https://github.com/symfony/doctrine-bridge/blob/6.3/composer.json#L19-L25
The Ant
в композере м.б. и нету, а в коде типы прописаны )