Comments 77
Есть понятый Eloquent, но тут решили сделать так же френдли, но не совсем
->andWhere(['>', 'views', 1000])
Query builder-у намного больше лет, чем Eloquent. Синтаксис перекочевал из Yii2, а туда с, изменениями, из Yii 1.1.
Для кого вышел Yii 3 ?
Для всех, кто пишет приложеня на PHP и хочет для них супер-стабильного на 100% оттестированного удобного фреймворка. И чтобы от прототипа переходить к долгой эксплуатации менее болезненно, чем обычно.
Успехов вам. Перевернута знаковая страница в истории PHP.
Однако на рынке есть хайповый Laravel, есть классический Symphony, которые не менее оттестированы и удобны ...
Конкуренция это в любом случае хорошо. Но я так долго ждал yii3, что сначала перешел на лару, а теперь на симфони. Было бы круто увидеть баттл карту против этих ребят, чтобы у таких как я появилась мотивация попробовать yii3
А что такое баттл карта?
Табличка с фичами и столбиками по продукту и его конкурентам, которая наглядно показывает преимущества этого продукта :)
Чтобы я такой посмотрел, ого, вот этого нет в симфони (или оно плохое), а в yii3 оно работает как надо. Ну и туда же бенчмарки.
Такую табличку можно нарисовать в пользу любого фреймворка выбрав определенный набор фич... Тут, наверное, правильно будет сравнивать в контексте критичных именно вам возможностей. Бенчмарки точно сделать ещё раз стоит.
@NikitchenkoSergey а давайте список критичных вам фич для ваших приложений, попробую прикинуть, какой фреймворк вам больше подойдёт.
Они неплохие, но другие. Мы делали проекты и на одном и на другом. В итоге всё-таки сделали Yii3.
Ну, оттестированы точно менее. Покрытие тестами в Yii3 исключительно высокое.
Есть ещё CakePHP. И он, и Laravel, и Symphony кроме огромного сообщества, предлагают регулярные релизы, выходящие по запланированному расписанию. Что делает выбор для разработчика очевидным, при разработке сервиса или системы на долгосрочную перспективу.
Кроме того, вокруг того же Laravel уже создана целая экосистема виртуализации, деплоя, мониторинга и прочее
В любом, случае, поздравления с выпуском Yii3!
Очень хотелось бы увидеть тесты производительности без воркера(process manager) и с его участием.
Ура! Мы дождались! Лучши
Поздравляю с релизом! Достойный продукт! Наконец-то вопрос "Когда Yii3?" не актуален) Ждем 3.1)
Выход Yii3 это почти как выход GTA6 😆 я уже не думал, что дождусь.
Мои поздравления 🥳
Первоклассный DI-контейнер
return [***]
с первым апреля!
Можно пояснить?
Это же конфиг контейнера в виде массива. В симфе `return static finction(...)`
в симфе декларативный yaml, и еще несколько вариантов как опция, включая императивную php лапшу
Yaml считается deprecated и они переходят плавно на PHP массивы уже несколько версий.
настолько deprecated, что по умолчанию services.yaml и по умолчанию в доках :)
это не так совершенно, вы оторваны от реальности. докажете свою правоту?
Про deprecated ошибся, читал, видимо по-диагонали анонсы, но вектор задали:
We’re not ready yet to make this new format the recommended one. YAML still offers many advantages. However, this update opens the door to using PHP as a first-class configuration format in the future. The new approach is concise, expressive, easy to maintain, well-supported by modern tools, and benefits from the full power of PHP. What’s still missing? Not all static analyzers and IDEs fully support complex array shapes yet, Symfony Flex currently understands YAML only, and a few other pieces still need refinement before this vision can become reality. Even so, this marks an exciting step toward a more unified, powerful, and developer-friendly configuration experience in Symfony.
https://symfony.com/blog/new-in-symfony-7-4-better-php-configuration
я думаю переход на php by default, если и состоится, то это настолько отдаленная перспектива, что ей можно пренебречь ближайшие лет 5.
если бы этот переход состоялся сегодня, я бы его оценил как шаг назад.
нахожу забавным как они от этого
YAML is used by default when installing packages because it's concise and very readable
бегут сюда
The new approach is concise, expressive, easy to maintain, well-supported by modern tools
используя практически те же "because it is concise, readable и expressive" 🤦♂️
слова в какой то момент совсем перестали иметь значение, даже в тех. среде.
Чем yaml лучше? На несколько символов меньше? С другой стороны для статического анализатора PHP лучше. Особенно если проект большой и над ним работает несколько команд
я думаю ответ очевиден: > because it's concise and very readable ;)
напишите конфиг с _instanceof, when@dev, when@test, ссылкой на сервис по имени (типа `param1: @app.logger.specific_instance`) в yaml.
самая обычная рабочая ситуация
затем заставьте себя написать его на php.
положите рядом оба файла.
убеждайте себя что вам удобнее и нагляднее php вариант, а несколько символов которые вы не сэкономили с yaml окупаются тем что статический анализатор вам сильно облегчает жизнь.
затем представьте как ваш любимый коллега засунет в php конфиг ifы, переменные, и константы. будет совсем хорошо
Ребята, спасибо вам за Yii в целом и за Yii3 отдельно! Может вы еще и Half-life 3 затащите?;)
Вы меня простите, но зачем писать на этом динозавре? Он же очень медленный и дырявый в сравнении даже с тем же js калом под нод жс, не говоря уже о go или rust
Вместо того, чтоб конструктивно ответить минусите. Давайте не обижаемся)
Вот я постоянно наблюдаю в логах прокси фаервола попытки сканирования на php скрипты, ну 80 процентов точно есть. Еще 10 эксплуатируют уязвимости next (nodejs/deno framework). По скорости php всегда в топе снизу любых бенчмарков, даже не смотря на то что yii один из самых быстрых php фреймворков. Апелировать скоростью разработки уже не получится, т.к агентные llm пишут код на раз два. Главное спланируй правильно и понимай архитектуру общую. Так зачем?
Давайте конструктивно объясню. В мире существует множество компаний, которым необходимы ИТ-решения. Одни из них - СМБ (средний/малый бизнесы). У них нет того количества ресурсов, чтобы изучать новый мегакрутой фреймворк и переписывать всё на новом языке каждый квартал. Им вообще не до этого. Им необходимы простые решения, решающие их проблему. Эту нишу в сфере веба, CMS - заняли php + js. Работает? Работает. Поддержка? Недорого. Риски взломов/утечек/падений? - если это у компании вторично, то как руки дойдут, мб и посчитают, мб даже и перепишут на что-то. А пока работает и хорошо, этого достаточно. Или вы хотите, чтобы ваша любимая локальная пиццерия переписала всё на расте? Ну тогда и пиццу в этом заведении смогут себе позволить только сеньор-rustaceans.
А в плане скорости работы конечного продукта, язык и фреймворки на сегодня это уже далеко не первый пункт. Вон яндекс вообще упарываются и пишут бэк на плюсах в том числе, но что толку, когда в конечном приложении 90% времени это загрузка рекламы, которую их продакты засунули на каждый скрин приложения. Рекламу же необходимо специально затаргетить на меня в зависимости от моих интересов, а для этого надо сперва в десяток сервисов сходить, собрать про меня всю инфу, прогнать через МЛ-модельку, посмотреть в какую же когорту я вхожу и какие у меня интересы. И в итоге это превращается в лагучее дерьмо, которым приходится пользоваться сами знаете почему.
Вы описали весь наш существующий интернет и проекты в IT.
Кстати, вы точно подметили - команда разработчиков должны решать проблему бизнеса. И только потом упарываться за скорость и технологии. Yii3 / Laravel - там уже имеют вторичное влияние. Если Тильда позволяет закрыть потребности бизнес задач - то почему бы и нет.
Я пару недель назад с другом обсуждал тему - что мне не сдался ReactJs, мне комфортно писать на голом JS,TS / ну и иногда jQuery (Да, есть задачи, когда проще сокеты поднимать и иметь реакт структуру, но их меньше 5-10%). И самое главное, еще 10+ человек которые придут - будут понимать контекст, а не выпендриваться за SOLID. Чтобы устраивать митапы на 10 человек чтобы только про код поговорить.
А ты разве что-то конструктивное написал чтоб тебе конструктивно отвечать?)
А ты бенчмарки проводил? А ты что, прямо что-то лютое пишешь, где тебе кресты или раст прямо необходим? Вываливай действительно крупный проект на расте, а не какой-нибудь CLI. Более чем уверен, что ни на крестах, ни на расте ты не писал.
Обычный бекенд сайта - это тоже лютое. И php сложный язык с кучей нюансов. Конечно c++ мы сразу отбрасываем, потому то он не совсем для веба и на нем я не писал и не хочу писать и даже никому не советую, т.к это крайне не безопасный язык и подходит для избранных. Но тот же Go, Rust, да даже старичек python https://programming-language-benchmarks.vercel.app/php-vs-python сильно лучше php и в скорости и в безопасности. Насчет меня - я пишу на rust и очень советую пересаживаться при первой же возможности. Потом скажете спасибо
Какой однако новогодний подарочек, я уже успел забыть про пхп, про yii. Сколько правда хороших воспоминаний, аж олдскулы свело, и круто что дело живёт дальше, пусть уже другие времена, совсем иной технологический ландшафт, но уверен кому-то наверняка это принесёт пользу, а кто-то даже смахнет скупую слезу ностальгии :)
Юху! Поздравляю все комьюнити с новым релизом 🎉🎄🎊 спасибо Александру Макарову и ко причастных!
На мой взгляд - это отличная новость, не смотря на долгий релиз, уверен этот фреймворк имеет право на существование и поддержку! Если бы в этот фрейм вливали лаве так же как в лару, все бы смотрели в его сторону, используя и переписывая свои существующие проекты на yii! Желаю только успехов!
спасибо Александру Макарову и ко причастных!
Мой вклад, на самом деле, несколько переоценен. Основное всё сделали вот эти люди: https://www.yiiframework.com/team
Теперь ждём ещё новую версию CodeIgniter. А там и до свежего Macromedia Flash недалеко.. считайте это новогодним желанием!
CodeIgniter, на самом деле, не умер. Вполне себе разрабатывается и релизы новые есть.
Да и Macromedia Flash трансформировался в Adobe Animate, который умеет экспортировать результат в HTML5 + CSS + JavaScript.
Macromedia Flash трансформировался в Adobe Flash.. на том эпоха и закончилась. MM Flash было простым инструментом, в котором при минимальном знании программирования создавались шикарные анимации. Именно то, что это был очень простой инструмент, собрало вокруг него такое талантливое комьюнити.
Переход на ActionScript 3 позволил писать на Flash сложные и никому не нужные игры и приложения, а простой платформы взамен так и не появилось. При этом с задачей поддерживать и развивать AS3 ни MM, ни Adobe не справились, и прекраснейший изначально и уникальный проект просто издох под собственным весом.
Yii был хорош тем, что был прост...
Совсем недавно писал пет-проект и всерьёз рассматривал вернуться к привычному Yii2, а за на тот момент ещё не-релизнутый третий браться не решился. А тут такой новогодний подарок! Искренне желаю Yii успехов в новом году!
Подскажите, при работе с swoole, есть ли поддержка корутин?
Смотря что имеется ввиду...
Воркер не блокируется и может обрабатывать большем чем один запрос.
В рамках одного запроса корутины работают, поддерживается пул коннекшенов к бд и т.д
Помню в 2010 году писал на yii и случайно наткнулся на django. Господи, какое же это было откровение после пхп, какой же это был некст левел в разработке, как я кайфовал от того, что в джанге можно накидать моделек и они работают как надо...
Конечно, с тех пор много воды утекло, фреймворки сравнялись по возможностям, но читая новости про yii всегда немного содрогаюсь, вспоминая первые шаги :) Ну да ладно, че то я разбухтелся, всех с Новым Годом и всем новых свершений!
Django — неплохой фреймворк, конечно, но в вашем случае прослеживается эффект второго фреймворка. Когда все шишки начальные собраны на первом и есть к нему некоторые претензии, а вот со вторым вы уже понимаете, что делаете и он идёт лучше. Как следствие — второй кажется вам сильно лучше. Ложечки нашлись, осадок остался...
Забавно, насколько у меня это зеркально :) В моём случае "эффект второго фреймворка", а точнее не второго, а N-го был однозначно со знаком минус. К моменту моего знакомства с джанго, я уже долгое время работал с MVC фреймворками. Не только PHP, хотя именно на Yii1/2 у меня были самые-самые проекты, которыми я до сих пор горжусь. Но джанго мне откровенно сломал мозг банально своим MVT и тем, что привычные концепции означают совсем другое.
Джангу я осилил, конечно, и даже потом полюбил, но поначалу плевался знатно. Сейчас с питоном работаю гораздо больше, чем с пыхом, но до сих пор триггерит это воспоминание, когда я тыкался во вроде бы знакомые концепции, а находил не то, что искал.
Поздравляю с релизом! Как раз начинаю делать пет-проект, попробую на yii3!
ох уж этот <php, благодаря Yii узнал о Rails. Спасибо за ностальгию
+++ и вы даже можете пошагово отлаживать код с помощью XDebug, если это нужно. +++
Ну и как это сделать? Проекты в Yii3 больше не запускаются нажатием одной кнопки. Нужно установить APP_ENV переменную для начала. Но как заставить XDebug это делать перед запуском? Не нашёл я об этом информации в официальной документации.
Переменные устанавливает не XDebug, а вы сами. Судя по всему, нужно собрать рецепт по XDebug.
Проекты в Yii3 больше не запускаются нажатием одной кнопки.
Да вроде запускаются через make up. Что-то не работает?
Да вроде запускаются через
make up.
Это богомерзкий докер. По нормальному программа запускается через
set APP_ENV=dev
./yii serve --port=8000Но тогда нет XDebug. XDebug, кстати, в консоли в таком случае выделен красным disabled. И ни слова о том, как его включить.
Пока что единственное, что придумал, это добавить
putenv("APP_ENV=dev");в начало index.php файла. Тогда можно запустить XDebug из NetBeans и программа заработает и можно дебагить.
Когда я был молод и кудряв, периодически халтурил на PHP (у знакомого веб-студия была). После голой пыхи Yii2 для меня был настоящим откровением — можно было писать практически так же, как и на ASP.Net MVC (в тот момент употреблял на основной работе). Так что спасибо авторам за моё счастливое детство!
Вопрос, возможно, холиварный и все-таки: какова цель создания Yii3 при наличии уже широко-распространенных? Каково его отличное преимущество от упомянутых тут Лары и Симфони?
PS Искренне поздравляю с выходом новой Yii3.
Это частично расписано в статье. Личная цель была в том, что я сделал несколько больших коммерческих проектов и на Laravel и на Symfony и на Yii2 и не был до конца доволен ни одним из них.
Для меня лично:
быстрый DI-контейнер, который при этом не компилится. В Symfony компилится, в Laravel не быстрый, в Yii2 уже норм, но мало используется по назначению.
форсирование нормального depdendecy inversion, отсутствие service locator. В Laravel сервис локатор и "фасады" несколько всё портят. В Symfony в меньшей степени.
PSR. В Yii3 нативный, в Symfony через адаптеры и не всё. У Laravel как у Symfony потому что юзает компоненты Symfony.
Качество. Такого покрытия тестами, пожалуй, ни у кого больше нет.
Открытость к PHP. Остальные фреймворки довольно закрыты к остальной экосистеме.
DBAL. yiisoft/db прекрасен.
Можно как угодно делать себе архитектуру и фреймворк не будет мешать. Я люблю вертикальные слайсы.
Много классных пакетов и возможность использовать любые PHP-пакеты. От того же Symfony, например, или PSR-совместимые. Контейнер отлично справляется с их конфигурацией.
'full_definition' => [
'class' => EngineMarkOne::class,
'__construct()' => [42],
'$propertyName' => 'value',
'setX()' => [42],
],
'static_call' => [MyFactory::class, 'create'],Мне одному такой синтаксис кажется странным? Ведь можно же было всё упростить, добавив ясности:
'full_definition' => [
EngineMarkOne::class, //0 элемент - всегда имя класса
[42], //1 элемент - всегда параметры конструктора
'$propertyName' => 'value', //Как и раньше
['setX', 42, 'named'=>4242], //Всё что массив - это название метода и его параметры
],
'static_call' => MyFactory::create(...),Или нет?
Спасибо, Александр, как будто в детство вернулся, php и Yii уже лет 10 не трогал, но он навсегда останется в моём сердечке!
Именно с php я начинал свой путь в программирование и писал свои собственные сайты начиная с Yii1. Помню ещё в вузе ездил на олимпиаду Волга-IT участвовать в секции PHP, там в качестве основы можно было использовать фреймворки и я тогда выбрал Yii2. А потом ещё и разрабатывал для него свои модули, можно сказать получил свой первый опыт совместной работы в опенсорсе.
Чудесное было время, я был таким молодым и наивным!
Круто! Успехов вам! Много чего вижу переделали в хорошую сторону и это радует
Пример даже сделали с нотками DDD и чистой архитектуры ;)
Поздравляю с релизом Yii3!
Было бы очень круто, если бы yiisoft/db не зависел бы от ext-pdo, чтобы юзать удобные на мой взгляд yiisoft/db + yiisoft/active-record в async приложениях на основе amphp/amp, реализовав кастомный yii3 async DB драйвер для mysql или postgres с использованием под капотом non-blocking amphp/mysql или amphp/postgres.
Интерфейсы не завсят от PDO (но сам пакет да, там часть реализации именно под PDO). По идее, можно реализовать и сейчас. В идеале, вынуть оттуда PDO-часть в отдельный пакет. Не уверен только на тему промисов и обработки результатов.
Интерфейсы не завсят от PDO (но сам пакет да, там часть реализации именно под PDO). По идее, можно реализовать и сейчас. В идеале, вынуть оттуда PDO-часть в отдельный пакет.
Согласен, об этом же и написал - PDO бы убрать из этого пакета как зависимость, вместе с частью реализации, зависящей от него. Это бы открыло уникальные возможности этого Yii3 пакета. Вроде как ни у кого из конкурентных фреймворков (лара/симф) такого пока нет (из-за обратной совместимости видать) ибо все зависят от PDO с его blocking I/O.
Не уверен только на тему промисов и обработки результатов.
Благодаря Fibers, которые завезли в PHP 8.1 и которые легли в основу amphp/amp v3, Promise по сути скрываются из клиентского кода, позволяя писать асинхронный код (например, асинхронный non-blocking вызов SQL SELECT запроса к БД посредством yiisoft/active-record), написанный в синхронном стиле без каких-либо изменений клиентского кода и сигнатуры методов.
Сейчас используем в новых проектах Symfony, и я постоянно добрым словом вспоминаю Yii за высококачественную документацию в коде. К хорошему привыкаешь быстро: для меня до сих пор как-то диковато разбираться с компонентами "ведущего" (по утверждениям авторов симфони) фреймворка, которые в своих док-блоках порой содержат чуть более чем ничего.
Поздравляю с релизом и выражаю надежду, что авторы сохранят ответственное отношение к оформлению кода, заложенное ещё в Yii1. Быть может, об этом редко кто говорит, но, на мой взгляд, это ощутимо помогает в освоении кодовой базы. Причём не только новичкам.
Yii3. Официальный релиз