👍2
От Symfony к Laravel - 5 шагов по подготовке проекта Symfony к миграции
Переход на фреймворк - это вызов, на который решаются немногие, но в некоторых случаях он имеет смысл с точки зрения бизнеса, здоровья проекта и чистого удовольствия от программирования.
Как только вы узнаете рецепт, становится ясно, что переход вполне осуществим.
Сегодня мы рассмотрим шаги по подготовке проекта Symfony к будущему переходу на Laravel.
1. Make sure your Configs are *.php
2. Prepare a custom script for TWIG to Blade conversion
3. Understand the differences between Symfony and Laravel container
4. Create a parallel Laravel container
5. Try the Laravel container in your tests
https://tomasvotruba.com/blog/from-symfony-to-laravel-5-steps-to-prepare-your-symfony-project-for-migration/
👉 @php_lib
Переход на фреймворк - это вызов, на который решаются немногие, но в некоторых случаях он имеет смысл с точки зрения бизнеса, здоровья проекта и чистого удовольствия от программирования.
Как только вы узнаете рецепт, становится ясно, что переход вполне осуществим.
Сегодня мы рассмотрим шаги по подготовке проекта Symfony к будущему переходу на Laravel.
1. Make sure your Configs are *.php
2. Prepare a custom script for TWIG to Blade conversion
3. Understand the differences between Symfony and Laravel container
4. Create a parallel Laravel container
5. Try the Laravel container in your tests
https://tomasvotruba.com/blog/from-symfony-to-laravel-5-steps-to-prepare-your-symfony-project-for-migration/
👉 @php_lib
🤡5👍1😁1💩1
Организация кода в Laravel. Личный опыт
В статье я расскажу, как организую свой код в проектах, использующих Laravel. Решил немного структурировать, с чем удалось познакомиться после перехода в мир фреймворков из мира чудного (ударение можете сами поставить) Битрикс. Многие вещи стали для меня открытием и особенно переоткрыл для себя ООП. Начнем рассмотрение с практик организации кода проекта. Статья адресована начинающим разработчикам.
https://habr.com/ru/articles/760022/
👉 @php_lib
В статье я расскажу, как организую свой код в проектах, использующих Laravel. Решил немного структурировать, с чем удалось познакомиться после перехода в мир фреймворков из мира чудного (ударение можете сами поставить) Битрикс. Многие вещи стали для меня открытием и особенно переоткрыл для себя ООП. Начнем рассмотрение с практик организации кода проекта. Статья адресована начинающим разработчикам.
https://habr.com/ru/articles/760022/
👉 @php_lib
👍4
Ускорение сайта путём выявления проблемных участков кода: xDebug + phpStorm
Статья будет полезна джунам и миддлам кто разрабатывает сайты, кто занимается оптимизацией сайтов и кто хочет посмотреть на работу php кода "с высоты". Для себя из полезного можно узнать как связать вместе OpenServer, PhpStorm и xDebug. Один раз настраиваете и можно потом запросто делать отладку. И так, начнём.
https://habr.com/ru/articles/579434/
👉 @php_lib
Статья будет полезна джунам и миддлам кто разрабатывает сайты, кто занимается оптимизацией сайтов и кто хочет посмотреть на работу php кода "с высоты". Для себя из полезного можно узнать как связать вместе OpenServer, PhpStorm и xDebug. Один раз настраиваете и можно потом запросто делать отладку. И так, начнём.
https://habr.com/ru/articles/579434/
👉 @php_lib
👍4
PHP-коллекции с PHP-map
Массивы и коллекции в PHP
Простая и элегантная работа с массивами в PHP с помощью объекта коллекции, подобного массиву, как это сделано в jQuery и Laravel Collections.
https://php-map.org/
https://github.com/aimeos/map
👉 @php_lib
Массивы и коллекции в PHP
Простая и элегантная работа с массивами в PHP с помощью объекта коллекции, подобного массиву, как это сделано в jQuery и Laravel Collections.
https://php-map.org/
https://github.com/aimeos/map
👉 @php_lib
php-map.org
PHP Collections with PHP Map
PHP collection library for easy and elegant handling of PHP arrays as array-like collections
👍4
Mighty
Валидация является общей задачей любого веб-приложения. Данные, передаваемые в приложение через формы - или любой другой тип ввода, - всегда должны быть проверены на соответствие определенному набору правил. Mighty может решить эту задачу простым и выразительным способом.
Mighty - это быстрая, мощная, надежная и простая в использовании библиотека валидации, с которой просто приятно работать, она позволяет легко проверять любые данные. Благодаря мощному языку Mighty Validation Expression Language (mVEL) она не похожа ни на что, что вы видели раньше. Благодаря его подходу к валидации и более чем 250 встроенным правилам нет практически ничего, что нельзя было бы проверить с его помощью, причем очень выразительно и компактно. Проще говоря, Mighty - это валидация на стероидах! Это действительно последняя библиотека валидации, которая вам когда-либо понадобится.
Mighty предлагает несколько различных подходов к проверке данных. Чаще всего она используется для проверки входящих данных через HTTP-запросы, но этим, конечно, не ограничивается; Mighty также предоставляет атрибуты в виде ограничений, что позволяет легко проверять модели и/или любые объекты.
Mighty включает в себя широкий набор удобных правил проверки, которые можно применять как отдельные правила, так и комбинировать их между собой с помощью операторов для построения более сложных проверок.
Установка
https://github.com/MarwanAlsoltany/mighty
👉 @php_lib
Валидация является общей задачей любого веб-приложения. Данные, передаваемые в приложение через формы - или любой другой тип ввода, - всегда должны быть проверены на соответствие определенному набору правил. Mighty может решить эту задачу простым и выразительным способом.
Mighty - это быстрая, мощная, надежная и простая в использовании библиотека валидации, с которой просто приятно работать, она позволяет легко проверять любые данные. Благодаря мощному языку Mighty Validation Expression Language (mVEL) она не похожа ни на что, что вы видели раньше. Благодаря его подходу к валидации и более чем 250 встроенным правилам нет практически ничего, что нельзя было бы проверить с его помощью, причем очень выразительно и компактно. Проще говоря, Mighty - это валидация на стероидах! Это действительно последняя библиотека валидации, которая вам когда-либо понадобится.
Mighty предлагает несколько различных подходов к проверке данных. Чаще всего она используется для проверки входящих данных через HTTP-запросы, но этим, конечно, не ограничивается; Mighty также предоставляет атрибуты в виде ограничений, что позволяет легко проверять модели и/или любые объекты.
Mighty включает в себя широкий набор удобных правил проверки, которые можно применять как отдельные правила, так и комбинировать их между собой с помощью операторов для построения более сложных проверок.
Установка
composer require marwanalsoltany/mighty
https://github.com/MarwanAlsoltany/mighty
👉 @php_lib
👍5
Действительно ли генераторы помогают экономить память?
Недавно я обратил внимание на одно заблуждение, связанное с генераторами, а точнее — с тем, как они позволяют экономить память. Такое ощущение, что многие воспринимают генераторы как инструмент, который позволит им получить "большой прирост производительности" из ничего. Или за такую шляпу фокусника, в которую можно засунуть бесконечное количество данных и не тратить память в самом скрипте.
Сначала я удивился — откуда взялись такие идеи? Ведь мы много лет работали с большими объемами данных без всяких генераторов. Лучшая статья про генераторы в РНР, опубликованная ещё десять лет назад, Что генераторы могут для вас сделать Антонио Феррары тоже практически не упоминает экономию памяти. У меня и у самого всегда было чёткое ощущение, что хотя генераторы — это совершенно отличное изобретение, у которого есть множество разнообразных применений, но вот только экономии памяти среди них нет.
В итоге у меня разыгралось любопытство и я решил разобраться с этим вопросом.
https://habr.com/ru/articles/599113/
👉 @php_lib
Недавно я обратил внимание на одно заблуждение, связанное с генераторами, а точнее — с тем, как они позволяют экономить память. Такое ощущение, что многие воспринимают генераторы как инструмент, который позволит им получить "большой прирост производительности" из ничего. Или за такую шляпу фокусника, в которую можно засунуть бесконечное количество данных и не тратить память в самом скрипте.
Сначала я удивился — откуда взялись такие идеи? Ведь мы много лет работали с большими объемами данных без всяких генераторов. Лучшая статья про генераторы в РНР, опубликованная ещё десять лет назад, Что генераторы могут для вас сделать Антонио Феррары тоже практически не упоминает экономию памяти. У меня и у самого всегда было чёткое ощущение, что хотя генераторы — это совершенно отличное изобретение, у которого есть множество разнообразных применений, но вот только экономии памяти среди них нет.
В итоге у меня разыгралось любопытство и я решил разобраться с этим вопросом.
https://habr.com/ru/articles/599113/
👉 @php_lib
👍3
Unorthodox Eloquent
Eloquent - это великолепный инструмент, полюбившийся многим. Он позволяет с легкостью выполнять операции с базами данных, сохраняя при этом простой в использовании API. Реализуя паттерн Active Record (AR), описанный Фаулером в книге PoEAA, он является одной из лучших реализаций AR, доступных на сегодняшний день.
https://muhammedsari.me/unorthodox-eloquent
👉 @php_lib
Eloquent - это великолепный инструмент, полюбившийся многим. Он позволяет с легкостью выполнять операции с базами данных, сохраняя при этом простой в использовании API. Реализуя паттерн Active Record (AR), описанный Фаулером в книге PoEAA, он является одной из лучших реализаций AR, доступных на сегодняшний день.
https://muhammedsari.me/unorthodox-eloquent
👉 @php_lib
👍2
Простые решения - Active Record против Data Mapper
https://matthiasnoback.nl/2022/08/simple-solutions-1-active-record-versus-data-mapper/
👉 @php_lib
https://matthiasnoback.nl/2022/08/simple-solutions-1-active-record-versus-data-mapper/
👉 @php_lib
matthiasnoback.nl
Simple Solutions 1 - Active Record versus Data Mapper
Active record | Data mapper | Conclusion
👍2
Откройте для себя новые пакеты Laravel
Наша цель - помочь сообществу Laravel найти новые и полезные пакеты Laravel в одном месте.
https://laravel-package-ocean.com/
👉 @php_lib
Наша цель - помочь сообществу Laravel найти новые и полезные пакеты Laravel в одном месте.
https://laravel-package-ocean.com/
👉 @php_lib
👍3
Проверка sql-запросов на наличие ошибок
https://staabm.github.io/2022/08/05/phpstan-dba-syntax-error-detection.html
👉 @php_lib
https://staabm.github.io/2022/08/05/phpstan-dba-syntax-error-detection.html
👉 @php_lib
👍2
Свой личный SMS-шлюз. Часть 1 – цели, задачи, сборка и тестирование
Представляю вам цикл статей по созданию собственного шлюза для отправки SMS-сообщений.
В первой части мы определим цели и некоторые аспекты использования своего шлюза, настроим программное обеспечение для отправки SMS с использованием USB-модемов, а также рассмотрим несколько интересных вариантов отправки
Начнем мы статью с вопроса – для чего отправлять SMS, ведь на дворе 2021 год? Да, мы уже привыкли к различным мессенджерам, уведомлениям в чат-боты, но SMS до сих пор обладает наиболее гарантированным уровнем доставки. Нет зависимости от наличия интернета и сообщение поступит даже в сети 2G и при слабом сигнале и на устройство без доступа к интернет. Таким образом, если планируется отправлять сообщения, которые гарантированно должны быть доставлены и критичны к времени доставки, то SMS – это возможно лучший выбор.
Под SMS-шлюзом мы понимаем программно-аппаратное устройство подключенное к сети сотового оператора и позволяющее производить автоматизированную отправку сообщений.
https://habr.com/ru/companies/ruvds/articles/554868/
👉 @php_lib
Представляю вам цикл статей по созданию собственного шлюза для отправки SMS-сообщений.
В первой части мы определим цели и некоторые аспекты использования своего шлюза, настроим программное обеспечение для отправки SMS с использованием USB-модемов, а также рассмотрим несколько интересных вариантов отправки
Начнем мы статью с вопроса – для чего отправлять SMS, ведь на дворе 2021 год? Да, мы уже привыкли к различным мессенджерам, уведомлениям в чат-боты, но SMS до сих пор обладает наиболее гарантированным уровнем доставки. Нет зависимости от наличия интернета и сообщение поступит даже в сети 2G и при слабом сигнале и на устройство без доступа к интернет. Таким образом, если планируется отправлять сообщения, которые гарантированно должны быть доставлены и критичны к времени доставки, то SMS – это возможно лучший выбор.
Под SMS-шлюзом мы понимаем программно-аппаратное устройство подключенное к сети сотового оператора и позволяющее производить автоматизированную отправку сообщений.
https://habr.com/ru/companies/ruvds/articles/554868/
👉 @php_lib
👍5🌚1
Свой личный SMS-шлюз. Часть 2 – создаём API и форму отправки
Представляю вам вторую часть из серии статей по созданию своего шлюза.
В первой части мы настроили Gammu, рассмотрели особо интересные параметры и успешно произвели отправку SMS сообщения. Сейчас нам предстоит задача посложнее – создать некую программную прослойку (API), для того, чтобы можно было работать со шлюзом путем отправки запросов на этот API. В первую очередь это комфорт, во вторую – большое количество дополнительных возможностей.
https://habr.com/ru/companies/ruvds/articles/555422/
👉 @php_lib
Представляю вам вторую часть из серии статей по созданию своего шлюза.
В первой части мы настроили Gammu, рассмотрели особо интересные параметры и успешно произвели отправку SMS сообщения. Сейчас нам предстоит задача посложнее – создать некую программную прослойку (API), для того, чтобы можно было работать со шлюзом путем отправки запросов на этот API. В первую очередь это комфорт, во вторую – большое количество дополнительных возможностей.
https://habr.com/ru/companies/ruvds/articles/555422/
👉 @php_lib
👍3
Расширенные возможности MessagePack
MessagePack — бинарный формат сериализации данных, позиционируемый авторами как более эффективная альтернатива JSON. Благодаря своей компактности и скорости, его часто выбирают в качестве формата обмена данными в системах, где важна производительность. Простота реализации также способствует его широкому распространению — ваш любимый язык программирования, скорее всего, уже имеет несколько библиотек для работы с этим форматом.
В этой статье я не буду рассказывать, как устроен MessagePack или сравнивать его с аналогами: материалов на эту тему в Интернете предостаточно. Чего действительно не хватает, так это информации о расширенной системе типов MessagePack. Я постараюсь объяснить и показать на примерах, что это такое и как с помощью дополнительных типов сделать сериализацию еще более эффективной.
https://habr.com/ru/companies/vk/articles/555748/
👉 @php_lib
MessagePack — бинарный формат сериализации данных, позиционируемый авторами как более эффективная альтернатива JSON. Благодаря своей компактности и скорости, его часто выбирают в качестве формата обмена данными в системах, где важна производительность. Простота реализации также способствует его широкому распространению — ваш любимый язык программирования, скорее всего, уже имеет несколько библиотек для работы с этим форматом.
В этой статье я не буду рассказывать, как устроен MessagePack или сравнивать его с аналогами: материалов на эту тему в Интернете предостаточно. Чего действительно не хватает, так это информации о расширенной системе типов MessagePack. Я постараюсь объяснить и показать на примерах, что это такое и как с помощью дополнительных типов сделать сериализацию еще более эффективной.
https://habr.com/ru/companies/vk/articles/555748/
👉 @php_lib
👍4
Как добавить функцию миграции структуры базы данных в ваши старые PHP-проекты?
Во вселенной существует огромное количество старых проектов, написанных на PHP. Старые кодовые базы трудно поддерживать, и нелегко создать среду разработки для старых приложений. У меня была такая же проблема; у меня есть много решений для создания stateless среды разработки для старых проектов. Сегодня я остановлюсь на одном из них, связанном с базами данных.
https://emre.xyz/how-to-add-a-database-structure-migration-feature-to-your-legacy-php-projects
👉 @php_lib
Во вселенной существует огромное количество старых проектов, написанных на PHP. Старые кодовые базы трудно поддерживать, и нелегко создать среду разработки для старых приложений. У меня была такая же проблема; у меня есть много решений для создания stateless среды разработки для старых проектов. Сегодня я остановлюсь на одном из них, связанном с базами данных.
https://emre.xyz/how-to-add-a-database-structure-migration-feature-to-your-legacy-php-projects
👉 @php_lib
👍2
Выявление медленных запросов до того, как они попадут в рабочую базу данных
Статический анализ кода доступа к базам данных стал реальностью с появлением phpstan-dba. Просто придерживайтесь правил, и все будет в порядке:
При включении phpstan-dba будет сообщать об ошибках в случае неэффективности запросов. Анализатор сообщает о проблемах, связанных с запросами, не использующими индекс, полными сканированиями таблиц и слишком большим количеством неиндексированных чтений.
https://staabm.github.io/2022/08/16/phpstan-dba-query-plan-analysis.html
👉 @php_lib
Статический анализ кода доступа к базам данных стал реальностью с появлением phpstan-dba. Просто придерживайтесь правил, и все будет в порядке:
При включении phpstan-dba будет сообщать об ошибках в случае неэффективности запросов. Анализатор сообщает о проблемах, связанных с запросами, не использующими индекс, полными сканированиями таблиц и слишком большим количеством неиндексированных чтений.
https://staabm.github.io/2022/08/16/phpstan-dba-query-plan-analysis.html
👉 @php_lib
👍4