Библиотека пхпшника | 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
Знаете ли вы, что Laravel поставляется с методом «preventStrayRequests()», позволяющим избежать реальных запросов во время тестирования? Это удобно не только для сторонних API, но и для локальных API. В то время как ваши тесты могут пройти локально, потому что все окружение работает, они могут провалиться в CI-конвейере. Это происходит потому, что в конвейере CI обычно активен только тот сервис, который вы тестируете, поэтому выполнение фактических запросов к недоступным API приведет к неудаче вашего набора.
🎉7👾1
💬 А расскажите, над каким проектом работаете прямо сейчас?

Что это за продукт или, может быть, пэт-проект? За что вы в нём ответственны? Довольны ли вы результатом?

#интерактив
🤖 Познакомьтесь с Willow, современным квантовым чипом от Google

Менее чем за 5 минут он способен выполнить тестовое вычисление, на которое одному из самых быстрых суперкомпьютеров сегодня потребовалось бы 10 септиллионов лет (это больше, чем возраст Вселенной).

👉Подробнее
🔥9👍2😁1
🦑👨💻 Программист в «Игре в кальмара»: каковы твои шансы выжить?

Каждый день оптимизируешь процессы, автоматизируешь задачи и решаешь сложные проблемы. Но что, если тебе придется применять свои навыки, чтобы выжить?

Окажутся ли твои скрипты, алгоритмы и багфиксы полезными в критической ситуации?

👉 Пройти тест
5
💻 Эффективное проектирование программных систем

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

Наш интенсив «Архитектуры и шаблоны проектирования» научит вас строить программные системы без боли и стресса. Вы на практике освоите основные паттерны проектирования и прокачайте свои навыки архитектора программного обеспечения.

🎄Начните свой 2025 со скидкой 35% на все курсы. Это лучшее вложении уходящего года – https://proglib.io/w/cc21e069
🥰1🎉1
Front Controller и Page Controller в PHP

Архитектурные паттерны Front Controller и Page Controller помогают структурировать работу веб-приложений, но подходят для разных сценариев.

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

Как это работает:
🔸Единая точка входа: Весь входящий трафик перенаправляется на один файл, например, index.php, с помощью настроек веб-сервера (например, .htaccess для Apache или правил маршрутизации для Nginx).
🔸Маршрутизация: Контроллер анализирует URL и определяет, какой компонент должен обработать запрос. Это может быть реализовано вручную или с использованием библиотек маршрутизации.
🔸Делегирование: На основе маршрута запрос передается соответствующему контроллеру или методу, который выполняет обработку.
🔸Формирование ответа: Контроллер формирует ответ (обычно в формате HTML или JSON) и отправляет его клиенту.

Page Controller фокусируется на создании отдельного контроллера для каждой страницы или группы страниц. Это улучшает изоляцию кода и облегчает модификации, так как изменения в одной странице не затрагивают другие. Такой подход удобен для небольших и средних проектов, где каждая страница требует уникальной обработки.

Каждый контроллер выполняет следующие задачи:

🔹Обработка запроса: анализирует данные, поступающие от клиента.
🔹Логика страницы: проводит проверку данных, взаимодействует с моделями или выполняет вычисления.
🔹Формирование ответа: передаёт обработанные данные в представление для генерации итогового ответа.

Оба паттерна можно комбинировать, адаптируя их под конкретные потребности приложения.
🔥5🤔4👍2🌚1
Для чего используется переменная $_REQUEST?

Переменная $_REQUEST является суперглобальным массивом, который используется для сбора данных из HTML-форм или URL-адресов. Это комбинация массивов $_GET, $_POST и $_COOKIE. Собранные данные могут быть параметрами, переданными через методы HTTP GET или POST.

Вот разбор того, что представляет собой каждый из этих методов:

$_GET: Данные, отправленные через строку запроса URL. Они видны всем и имеют ограничение на объем передаваемых данных.

$_POST: Данные, отправленные через HTTP POST-запрос, обычно из HTML-формы с использованием метода POST. Эти данные не видны в URL-адресе и могут передавать больший объем данных по сравнению с $_GET.

$_COOKIE: Данные, хранящиеся в файлах cookie браузера пользователя.

$_REQUEST позволяет получать доступ к данным независимо от того, как они были отправлены, будь то запрос GET (параметры URL), запрос POST (отправка формы) или cookie. Однако полагаться исключительно на $_REQUEST иногда может привести к проблемам с безопасностью, поскольку он объединяет различные источники пользовательского ввода. Обычно рекомендуется использовать явно $_GET, $_POST или $_COOKIE в зависимости от предполагаемого использования и источника данных, поскольку это обеспечивает большую ясность и безопасность.
😁10👍21
Swagger — это широко используемый инструмент для документирования и тестирования API, который легко интегрируется с такими популярными веб-фреймворками, как Laravel, Spring Boot, CodeIgniter и ExpressJS.

В этой статье рассматривается интеграция Swagger с CodeIgniter.
👍2🤩1
Знаете ли вы, что для отслеживания медленных запросов можно использовать параметр whenQueryingForLongerThan? Вы можете установить порог в миллисекундах. Если запрос превысит порог, вы можете отправить уведомления или выпить кофе с тем, кто создал запрос 😂.
😁19👍5🤩3
🧑‍💻 Статьи для IT: как объяснять и распространять значимые идеи

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

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

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

👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
👍1
Создание типозащищенной функции pipe() в PHP

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

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

Хотя реализация в PHP сложнее и менее изящна, чем в Scala, она может быть полезна для разработчиков, которым нравится функциональный стиль программирования и необходимость писать чистый и логичный код.
👍7🌚2
#дайджест #PHPdevjob

Вакансии PHP разработчиков уровня Junior

▪️ Junior PHP-разработчик
Гибрид (Москва), Издательство МОЗАИКА-СИНТЕЗ
Подробнее

▪️ Junior backend разработчик (PHP, laravel)
Офис (Санкт-Петербург), НаПоправку
Подробнее

Вакансии PHP разработчиков уровня Middle

▪️ Backend-разработчик PHP (Middle)
Удалёнка, Simtech Development
Подробнее

▪️ Middle/Senior PHP-разработчик (Laravel)
Офис (Москва, Ростов-на-Дону) / Удалёнка, A3F Group
Подробнее

Вакансии PHP разработчиков уровня Senior

▪️ Senior PHP Developer
Удалёнка, BORK
Подробнее

▪️ Team Lead PHP Backend Developer (МК+ОТА/ЦТ)
Удалёнка / Офис (Санкт-Петербург), Bnovo
Подробнее

Понравились вакансии?
❤️ — да
🤔 — нет
🤔5😁3👍21🔥1
Давайте признавайтесь в комментариях — что вам подарили? 👇
😁3
❄️🎄🤔 Чем заняться программисту на эти праздниках?

Можно посмотреть фильм из нашей подборки (в ней нет социальной сети и матрицы, потому что их уже все смотрели):

Военные игры (1983)
Хакеры (1995)
Пираты Силиконовой Долины (1999)
Кадры (2013)
Сноуден (2016)
Кто я (2014)
Черное зеркало. Бандерснэтч (2018)
👏2
Forwarded from Библиотека программиста | программирование, кодинг, разработка
💻📈 Итоги года Proglib: 2024 год в цифрах и достижениях

«Библиотека программиста» подводит итоги 2024 года: 415 экспертных статей и миллион просмотров ежемесячно. Разбираем ключевые достижения, лучшие материалы и делимся планами развития.

👉 Читать статью
👉 Зеркало

P. S. Ну просто не могли не прикрепить мем года к этому посту 🫶
👍3
Создание шаблона приложений Symfony 7 с помощью FrankenPHP, Docker, PostgreSQL и php 8.4

В статье рассказывается, как создать универсальный шаблон для запуска проектов на Symfony, таких как монолитные приложения или API. Основой является сервер приложений FrankenPHP, написанный на Go, с использованием PostgreSQL в качестве реляционной базы данных. Для организации работы контейнеров используется Docker и Compose.

Основные этапы разработки:
1. Организация структуры проекта
Проект имеет простую структуру: одна папка для файлов Docker и другая для исходного кода Symfony. Основной файл конфигурации compose.yml размещается в корне проекта. Он описывает два основных контейнера:

🔸База данных PostgreSQL.
🔸Приложение Symfony, использующее FrankenPHP.

2. Настройка окружения для разработки
Для разработки создается файл compose.override.yml, позволяющий настраивать дополнительные порты, монтировать директории и включать Xdebug. Это упрощает отладку и разработку.

3. Создание Dockerfile для приложения
Dockerfile имеет несколько стадий:

🔹Базовый образ на основе Debian Bookworm и FrankenPHP.
🔹Разработка: включает зависимости, такие как Xdebug, и файлы конфигурации для разработки.
🔹Продакшн: оптимизированный образ с использованием OPcache и минимизацией зависимостей.

4. Автоматизация процессов с помощью Composer
Composer используется не только для управления зависимостями, но и для выполнения скриптов, таких как установка контейнеров, миграция базы данных, загрузка фикстур и многое другое.

5. Конфигурация FrankenPHP
FrankenPHP работает через прокси-сервер Caddy. Используются конфигурации, рекомендованные в официальной документации, с возможностью настройки количества рабочих процессов и режима работы.

6. Symfony и дополнительные инструменты
Установлены зависимости, обеспечивающие высококлассный опыт разработки, включая Code Sniffer, phpstan, Rector, а также пакеты Symfony, такие как Doctrine ORM, Twig и инструменты для тестирования.

7. Оптимизация для продакшна
Для продакшна предусмотрена отдельная стадия сборки, где уменьшается нагрузка за счет использования OPcache и других оптимизаций. Создается файл composer.override.prod.yml, описывающий настройки для продакшн-окружения.
👍10