Pull to refresh

Отлов и обработка исключений в Yii2

Reading time3 min
Views35K
В Yii2 по-умолчанию все Exception обрабатываются, за это отвечает специальный обработчик. Если при обработке запроса возникает нехорошая ситуация (например, пришли некорректные данные от клиента), то можно выбросить исключение. Обработчик сформирует человекообразный ответ.

Интересно, что в таком случае ошибка “Warning: Uncaught exception” в лог ошибок не выводится. Может создаться впечатление, что все исключения перехватываются средствами фреймворка. Но это не так. На наш проект некоторое время назад натравили средство мониторинга (в нашем случае New Relic), которое информацию обо всех выброшенных исключениях отображает в ошибках (именно как “Warning: Uncaught exception”), считает эти исключения необработанными. С этим надо было что-то делать.

Ниже расскажу о схеме обработки исключений, которую в итоге выбрал. Вполне возможно, что кому-то это еще пригодится.
Читать дальше →
Total votes 14: ↑11 and ↓3+8
Comments12

Подержанное авто в кредит за 1 минуту

Reading time6 min
Views13K


Вместо введения


Как и все интересные истории, эта началась достаточно давно и неожиданно. Однажды наш банк-партнер пришел к нам и сказал: “Ребята, мы научились делать скоринг в нашей системе за одну минуту. Как насчет того, чтобы объединить наши усилия и интегрировать проекты? С нас – решение и кредит, с вас – машины”. Сказать, что мы воодушевились, – ничего не сказать! Мы имели все шансы стать первыми чуть ли не в мире, кто может дать кредит онлайн на подержанное авто за одну минуту (ОДНУ МИНУТУ, КАРЛ)! Ниже я расскажу, что из этого получилось, но для начала расскажу вам, кто такие, собственно, МЫ.

Читать дальше →
Total votes 31: ↑26 and ↓5+21
Comments45

SOLID на практике. Принцип открытости-закрытости и ActiveQuery Yii2

Reading time4 min
Views6.6K

Как-то в рабочей беседе один мой коллега-программист заметил, что всевозможные принципы и паттерны проектирования ПО хорошо применять, когда делаешь тестовые задания, однако в реальных, боевых проектах они как правило неприменимы. Так ли это на самом деле?

Читать далее
Total votes 11: ↑8 and ↓3+5
Comments39

Yii3 будет не тем, чего я ожидал

Reading time2 min
Views10K

Я - фанат yii2. Да, несмотря на многие его недостатки, я смог его полюбить и примерно 5 лет зарабатываю на хлеб с маслом благодаря его разработчикам.

Уже примерно два года я жду релиза Yii3. Я ждал, что это будет крутой монолит, как и вторая версия, но сильно доработанная и с новыми плюшками. Но, как оказалось, Yii3 идёт вообще по другому пути.

У Yii3 есть канал в telegram https://t.me/has_yii3_released , где каждый день в 10:10 выкладывается пост с текущим состоянием разработки Yii3. Я заметил, что спустя 5 месяцев после того, как я подписался на этот канал, развития практически не было. Тогда я решил написать в чате фреймворка (https://t.me/yii3ru) с предложением внести свой труд в разработку. Т.к. я ещё "недомиддл", то меня вежливо отправили обучаться тестированию (без сарказма, реально вежливо).

И тут я решил поинтересоваться, насколько сильным конкурентом он может стать laravel. На что мне ответил один из админов "Я не знаю, но технически получается хорошо :)"

НО! Далее мне рассказали, что (Я - это я, А - админ канала).

Читать далее
Total votes 38: ↑29 and ↓9+20
Comments16

Yii2 динамический sitemap

Reading time2 min
Views2.8K

Хочу подлиться с читателями Хабр очередным своим открытием, что все сложное просто. Задачу создания динамического sitemap на Yii2 мне поставил СЕО специалист. Мне нужно было создать sitemap на основе результата запроса из базы данных.

Поиск решений сводился к расширению пула зависимостей и установкой новых библиотек. Однако нашлось решение в рамках Yii2 без сторонних зависимостей. При этом решение довольно гибкое и применимо в разных интерпретациях.

И так приступим:
Сначала создадим экшэн метод в контроллере SiteController который будет брать данные из модели и отдавать рендеру. При этом приложению задаем формат ответа и добавляем заголовок для клиента.

И так приступим:
Total votes 11: ↑4 and ↓7-3
Comments12

Новости Yii 2022, выпуск 2

Reading time4 min
Views4.5K

Всем привет!

С вами снова Александр. Прошлый выпуск был второго мая и после этого наступила тишина. В очередной раз не потому, что ничего не происходило, а совсем наоборот. Происходило всё и сразу. В конце сентября я поехал на конференцию и, вместо возвращения домой к семье, оказался в Ереване, столице Армении. Оттуда и пишу этот выпуск.

Что касается разработки, прогресс отличный несмотря на то, что происходит в мире в общем и в странах членов команды в частности.

А теперь перейдём к интересным событиям, произошедшим с прошлого выпуска новостей.

Читать далее
Total votes 28: ↑27 and ↓1+26
Comments0

Неочевидный RabbitMQ в Yii2 или почему RabbitMQ пишет во все очереди сразу

Reading time3 min
Views11K

Хочу поделиться практической проблемой конфигурирования брокера очередей RabbitMQ в Yii2. Предупреждаю читателя, что не обладаю экспертным мнением по работе с данным брокером очередей, однако очень хочется восполнить пробелы документации Yii2 и закрепить результат собственных мучений. Итак, если вы когда либо сталкивались с проблемой, что посылаемые сообщения попадают во все очереди, которые есть на сервере очередей, вы согласны, что это проблема и не понимаете почему так происходит, тогда прошу под кат.
Читать дальше →
Total votes 16: ↑12 and ↓4+8
Comments7

Новости Yii 2020, выпуск 5

Reading time4 min
Views6K

Приветствую!


Время очередного выпуска новостей Yii. Как у Yii 2, так и у Yii 3 всё хорошо :)


На самом деле, в этом году перед этим выпуском было ещё четыре, как следует из порядкового номера. Но я был так увлечён Yii 3, что забыл про хабр… Почитать их можно прямо на главной https://yiiframework.ru/. Ну или, если больше нравится английский, на нашей странице на OpenCollective.
Читать дальше →
Total votes 18: ↑17 and ↓1+16
Comments28

Yii news 2020, issue 5

Reading time4 min
Views1.8K

Hello, community!


It is time for another Yii news issue. Both Yii 2 and Yii 3 are doing well.


I've finally updated the team page on the website to reflect the current state of things.


Konstantin Sirotkin is back and actively taking care of ElasticSearch Yii 2 extension.


Yii 3 main team was formed (actually happened late 2019). Likely you know the names because most were mentioned in previous Yii news issues.


Also, we have partially moved to GitHub actions. Experience is great so far, so we can definitely recommend that. We're adding phan static analysis
and running tests with Infection to make code quality even better.

Read more →
Total votes 3: ↑3 and ↓0+3
Comments0

«Взломать» за 60 секунд или карантинное безумие

Reading time2 min
Views51K
Небольшая история о неадекватном заказчике и нахождении уязвимости на сайте за 1 минуту.

image

Не ожидал, что именно эта история станет моей первой статьей на Хабре. Пишу пока горячо!

Все что Вы прочитаете далее — это не призыв к действию или попытка «кого-либо» скомпрометировать.
Читать дальше →
Total votes 128: ↑111 and ↓17+94
Comments124

Новости Yii 2021, выпуск 4

Reading time3 min
Views4.4K

С Новым Годом и Рождеством!

С вами Александр Макаров и свежий выпуск новостей Yii.

В этом году было не много выпусков новостей. Этот четвёртый. А вот сделано всего было действительн много. Несмотря на то, что год выдался не из лёгких, я думаю что общий прогресс отличный.

Читать далее
Total votes 20: ↑19 and ↓1+18
Comments7

Виджеты данных Yii2 и DTO

Reading time7 min
Views4.9K

Базово Yii2 из коробки предлагает нам архитектуру приложения по шаблону MVC (модель, представление, контроллер). Для более сложного приложения прибегаем к чистой архитектуре и в рамках неё необходимо отказаться от Active Record в шаблонах (представлениях), т.к. Active Record это часть слоя по работе с базой данных, о которой другим слоям знать не нужно. Предполагаем, что мы хотим продолжить использовать встроенные виджеты по отображению данных в представлениях: DeatilView, ListView и GridView. Последние два используют ActiveDataProvider, который в себе содержит Active Record модели - цель данной статьи избавиться от них и использовать только DTO.

Читать далее
Total votes 8: ↑8 and ↓0+8
Comments13

Использование ООП подхода для рассылки писем через Unione (php, Yii2)

Reading time7 min
Views2.3K

В данной статье мы бы хотели описать использованный нами ООП подход к отправке писем через данный сервис рассылок на php. Суть которого заключается в создании объекта инкапсулирующего данные необходимые для отправки письма и методы работы с ними. Кажется что это довольно простая идея, но нам не встречалось ещё в доступных источниках такого подхода, поэтому хотим внести свой вклад в этом направлении. Тем не менее статья написана не для того чтобы пропагандировать данный подход. Она написана с целью развития компетенций в области ООП и способности его использования практических задач, будь то отправка писем или ещё что-то.

article->open()
Total votes 9: ↑7 and ↓2+5
Comments77

Рассылка писем через Unione (php, Yii2)

Reading time9 min
Views2.2K

В статье представлен код позволяющий отправлять транзакционные письма через сервис unione, делать HTTP запросы к REST апи, а так же отправлять обычные email по smtp используя общий класс отправитель различных сообщений.

(new UniversalReader($name))->read()
Total votes 6: ↑5 and ↓1+4
Comments58

Новости Yii 2023, выпуск 2

Reading time4 min
Views6.1K

Всем привет! Это Александр Макаров и второй выпуск Yii новостей в этом году.

С момента последнего выпуска в феврале прошло 3 месяца. Мы стремились ускорить разработку Yii3, но также продолжали поддерживать Yii1 и Yii2. Несмотря на ограниченные средства для разработки, за последние несколько месяцев удалось достичь определённого прогресса. Давайте разберём более детально, что было сделано.

Читать далее
Total votes 29: ↑28 and ↓1+27
Comments7

Простой бенчмарк для PHP приложений

Reading time5 min
Views4.7K

Очень часто приходится сравнивать время выполнения кода с целью выбора наиболее оптимального решения, и каждый раз для этого приходилось писать обработчик с расчётом микровремени, после чего все результаты заносились в какую-нибудь таблицу Excel и вручную рассчитывалось минимальное, максимальное и среднее время выполнения...

Для решения этой тривиальной задачи был выпущен пакет "Runtime Comparison", позволяющий сравнивать время выполнения кода без лишних затрат.

Читать далее
Total votes 11: ↑10 and ↓1+9
Comments39

OpenApiGenerator — или как мы генерируем документацию для 3k сервисов API на PHP без погружения в openapi

Level of difficultyMedium
Reading time10 min
Views5K

Вначале мы делали документацию в Word, потом в Google Docs, потом в Confluence, потом была попытка написать openapi-спецификацию для API вручную, но увидев сколько всего там нужно было писать - бросили эту затею.

Нужно было вести документацию в знакомом отрасли формате для растущего (в количестве сервисов) API, и делать это максимально "подручно".

Читать далее
Total votes 6: ↑5 and ↓1+4
Comments3

Yii2. Знакомство

Reading time4 min
Views109K

Введение

На днях, свершилось событие, которое Я и думаю еще немало людей ждали. Авторы Yii Framework выкатили превью-версию.

Спустя день здесь на хабре появился обучающий материал, прочтение которого вызвали странные впечатления и после выходных потраченных на изучения кода Yii2, я решил написать свою версию. Надеюсь получится не хуже.
Читать дальше →
Total votes 127: ↑116 and ↓11+105
Comments54

Yii2 мигрирует с PHP на Ruby (первоапрельская шутка)

Reading time1 min
Views16K
image

Команда Yii не без удовольствия сообщает, что Yii2 с сегодняшнего дня переписывается на Ruby. Текущая стабильная версия останется на PHP. После многих месяцев раздумий мы решили, что Ruby подойдёт для Yii2 больше, чем PHP.

Мы сделаем всё возможное, чтобы переход был лёгким и безболезненным. Вам не придётся волноваться о потенциальных проблемах при миграции.

Официальный анонс.
Total votes 60: ↑30 and ↓300
Comments24

Yii 2 alpha

Reading time1 min
Views17K
Вышла первая альфа версия Yii 2. Скачать в виде архива её можно с официального сайта. Там же приведены инструкции по установке через Composer.

Yii 2 является полностью переделанной версией одного из самых популярных PHP-фреймворков. В новой версии унаследован общий дух первой версии, а именно стремление к простоте, скорости и расширяемости. В Yii 2 применяются многие возможности PHP 5.4. Фреймворк следует лучшим практикам современной веб-разработки.

Читать дальше →
Total votes 48: ↑42 and ↓6+36
Comments82