Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter
11.3K subscribers
1.33K photos
21 videos
26 files
4.02K links
Все самое полезное для пхпшника в одном канале.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/bca892d6

Для обратной связи: @proglibrary_feeedback_bot

РКН: https://gosuslugi.ru/snet/67a5d13cd6fa92100ee6f68b
Download Telegram
Построение устойчивой и масштабируемой архитектуры

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

Что такое масштабируемость и устойчивость

Масштабируемость позволяет системе выдерживать высокие нагрузки и распределять их без сбоев. Устойчивость означает способность системы к самовосстановлению при сбоях, без потери данных и с минимальным вмешательством разработчиков. Эти качества можно достичь за счёт изоляции процессов: обрабатывая каждую задачу отдельно, можно быстро масштабировать обработку и выполнять только те операции, которые действительно необходимы.

Сообщения как основа архитектуры

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

Ориентация на бизнес-логику

Чтобы облегчить задачу разработчикам и сделать архитектуру полезной в повседневной работе, представлена концепция «Бизнес-ориентированной архитектуры». Её задача — позволить разработчикам сосредоточиться на бизнес-логике, а не на настройке инфраструктуры. Достичь этого помогают три опорных столпа:

1. Устойчивость сообщений — сообщения передаются по каналам, обеспечивая асинхронное выполнение и соблюдение шаблонов, таких как автоматические повторы и обработка ошибок. Это снижает вероятность неправильной настройки системы.

2. Декларативная конфигурация — вместо сложной ручной настройки применяется подход с атрибутами, где каждый метод помечается как обработчик команды. Это упрощает разработку, позволяет избежать ошибок конфигурации и позволяет новым разработчикам работать с системой без глубокого понимания её устройства.

3. Блоки построения — использование готовых решений, таких как агрегаты и проекции, помогает избежать повторяющегося кода, который загружает процесс разработки. Агрегаты позволяют сосредоточиться на бизнес-логике, упрощая процесс обновления и хранения данных, а проекции помогают быстро создавать представления данных.

👉Читать статью с примерами кода(Если не открывается попробуйте включить VPN)
💬Итак, когда есть анонимный класс, который дал анонимный объект, можно ли деанонимизировать его и использовать в другом месте кода?

Благодаря class_alias() и $object::class это возможно!
12👾10👍2
side-effects-detector

Эта библиотека анализирует php-код на предмет побочных эффектов.

Побочные эффекты классифицируются по категориям, чтобы их было легче отфильтровать в зависимости от вашего сценария использования.
👍2
Laravel под капотом — немного о макросах

В Laravel разработчики часто сталкиваются с ситуацией, когда нужного метода для работы со строками или коллекциями не оказывается под рукой. Чтобы решить эту проблему, Laravel предлагает удобный инструмент — макросы. Макросы позволяют добавлять кастомные методы к существующим классам фреймворка, что делает его более гибким и расширяемым.
❤‍🔥4👍21
Применение статических анализаторов архитектуры на примере гексагональной архитектуры

Отсутствие четкой структурированной архитектуры проектов — не редкость в ИТ. Одни этим пренебрегают из-за маленького масштаба проекта, другие — из-за сжатых сроков разработки, третьи — из-за отсутствия экспертизы в этом вопросе. Вместе с тем, движение по этому пути — практически всегда история с «отложенными последствиями»: со временем такие проекты становится сложно поддерживать, масштабировать, администрировать и фиксить.

Здесь рассказывается, почему важно структурировано выстраивать архитектуру проектов, а также показано на примере, с помощью каких инструментов можно отслеживать соответствие архитектуры изначальным требованиям.
👍3🔥1👏1
🧑‍💻 Статьи для IT: как объяснять и распространять значимые идеи

Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.

Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.

Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.

👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
👍2
PHP: Современная альтернатива для борьбы с усталостью от JavaScript

За последние годы PHP стал более современным, удобным и производительным. Для разработчиков, уставших от сложности JavaScript-экосистемы, PHP может предложить упрощённый и эффективный подход к разработке веб-приложений.

Проблемы JavaScript-экосистемы
JavaScript стал основой для создания интерактивных веб-приложений, но его экосистема осложнилась. Разработчики сталкиваются с избытком фреймворков (React, Angular, Vue), сложностью инструментов (Webpack, Babel) и частыми изменениями, приводящими к «усталости от JavaScript».

Эволюция PHP
Сегодня PHP значительно отличается от того, каким он был 10 лет назад. Его модернизация затронула основные аспекты разработки:

1. Современный синтаксис
PHP теперь поддерживает строгую типизацию, сокращённые функции (arrow functions) и возможности работы с несколькими типами (union types). Это делает код предсказуемым и понятным.

2. Высокая производительность
Выпуск версий PHP 7 и 8 принёс значительный рост скорости работы и снижение потребления памяти. Технологии вроде JIT-компиляции обеспечивают ещё большее ускорение.

3. Поддержка асинхронного программирования
Библиотеки ReactPHP и Amp позволяют использовать асинхронный подход. Это открыло возможности для создания реальных приложений в реальном времени, таких как чаты или онлайн-игры.

4. Современные фреймворки и инструменты
Laravel и Symfony предлагают удобные и надёжные решения для разработки. Composer упростил управление зависимостями, а инструменты вроде PHPUnit и PHPStan помогают поддерживать высокое качество кода.

5. Улучшенный опыт разработки
Нововведения, такие как оператор null coalescing (??) и конструкции вроде match, делают код чище и проще для поддержки. Ошибки теперь легче отлавливать благодаря улучшенной системе исключений.

Преимущества PHP перед JavaScript
Простота: Создание CRUD-приложений с помощью PHP проще, чем использование сложного стека JavaScript.
Стабильность: PHP сохраняет обратную совместимость, что минимизирует риск поломок кода.
Зрелость для веба: PHP идеально подходит для задач вроде управления контентом (WordPress, Drupal) и создания API.

Многие устаревшие стереотипы о PHP больше не актуальны. Сегодня язык предлагает современный инструментарий, активное сообщество и востребованность на рынке. Разработчики, готовые освоить новые возможности PHP, могут быстро адаптироваться и успешно применять его в работе.

Современный PHP — это не просто инструмент прошлого, а мощное решение для настоящего и будущего веб-разработки.
👍24😁6😢1🌚1
Какие способы оптимизации производительности баз данных знаете?

Существует несколько основных способов оптимизации баз данных:

Индексирование: Убедитесь, что ваша база данных имеет правильные индексы для часто используемых запросов. Индексы позволяют ускорить поиск данных.

Оптимизация запросов: Напишите запросы таким образом, чтобы они были эффективными. Используйте инструкции JOIN, WHERE и GROUP BY там, где это необходимо, чтобы снизить объем возвращаемых данных.

Кэширование: Используйте кэширование результатов запросов там, где это возможно. Например, результаты запросов к базе данных могут быть кэшированы в Redis или Memcached.

Ограничение объема данных: Загружайте только те данные, которые действительно нужны. Используйте LIMIT и OFFSET при запросах, чтобы извлекать только необходимое количество записей.

Оптимизация структуры таблиц: Проведите анализ структуры таблиц и убедитесь, что она оптимально сбалансирована для ваших запросов. Иногда изменение типов данных, уменьшение размера полей или нормализация таблиц может улучшить производительность.

Использование транзакций: Используйте транзакции для группировки нескольких операций в одну единицу работы. Это помогает уменьшить накладные расходы на управление транзакциями и обеспечить целостность данных.

Масштабирование базы данных: При необходимости масштабируйте базу данных горизонтально или вертикально. Горизонтальное масштабирование (шардинг) позволяет распределить данные по нескольким серверам, а вертикальное масштабирование (разделение на таблицы) позволяет распределить данные по разным таблицам или базам данных.

Мониторинг и профилирование: Регулярно отслеживайте производительность запросов и операций базы данных с помощью инструментов мониторинга и профилирования. Это позволяет идентифицировать узкие места и проводить дальнейшую оптимизацию.
👍81
Какой подарок хотели бы на Новый Год?⬇️⬇️⬇️
Yii Mailer

Пакет предоставляет абстракцию для отправки электронной почты через интерфейсы mailer и message.

Фактическая отправка почты обеспечивается отдельными взаимозаменяемыми пакетами.
👏7🌚21🔥1😁1
Реализация сценария использования DDD на PHP

Здесь рассматривается подход к реализации сценария использования (Use Case) в рамках Domain-Driven Design (DDD) на PHP. Примером служит класс TaxPersistUseCase, который используется для управления сохранением сущности налога. Подход демонстрирует использование интерфейсов и доменных классов для работы с данными, сохраняя четкое разделение компонентов и следуя принципам DDD.
🌚8👍4
is_a() против Instanceof

is_a() и instanceof — это одна и та же функция: проверка принадлежности объекта к определенному классу. Однако выполняются они по-разному.

Использование оператора ::class безопасно в обоих случаях.

Использование имени является именем класса для instanceof, в то время как для is_a() оно является именем константы. Это может привести к путанице.
😁5👍4
Как часто, по вашему мнению, следует менять место работы?

Ставьте реакции:

— раз в год
🔥 — раз в 2-3 года
❤️ — раз в 5-6 лет
🌚 — а можно менять работу?
🔥113🌚953814🤩1
Вакансии «Библиотеки программиста» — ждем вас в команде!

Мы постоянно растем и развиваемся, поэтому создали отдельную страницу, на которой будут размещены наши актуальные вакансии. Сейчас мы ищем:
👉контент-менеджеров для ведения телеграм-каналов

Подробности тут

Мы предлагаем частичную занятость и полностью удаленный формат работы — можно совмещать с основной и находиться в любом месте🌴

Ждем ваших откликов 👾
2
Многие, возможно, уже видели «красные флаги» Яндекса⁠⁠. Помимо кучи неприемлемых требований нас больше всего заинтересовало то, что у GO-разработчика PHP опыт не считается релевантным🤔

Ваше мнение можете писать в комментарии👇
😁25😢15🌚5👍2🤔1
💡 Как избавиться от WebSockets и сэкономить $1 млн в год: неожиданные решения для оптимизации

Как снизить расходы на инфраструктуру и повысить эффективность? Оказывается, отказ от WebSockets может сэкономить миллионы. Вместо привычного подхода можно использовать решения, которые не только проще, но и лучше подходят для определённых задач, как, например, асинхронные очереди или SSE.

Знаете ли вы, как выбрать стратегию, которая одновременно сократит затраты и улучшит масштабируемость? Разберитесь в тонкостях оптимизации и найдите способ выжать максимум из вашей системы. 🚀

🔗 Читать статью
🔗 Зеркало
😁9👍3
Выпущен PHP 8.4!

Обновление доступно на официальном сайте.

Хороших выходных🫣
🔥24👍5🥱1