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

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

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

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

РКН: https://gosuslugi.ru/snet/67a5d13cd6fa92100ee6f68b
Download Telegram
Что такое stateless?

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

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

Большинство веб-приложений на PHP по умолчанию являются stateless, как и множество других веб-технологий. Однако, в PHP есть способы сохранения состояния, если это нужно для приложения. Например, использование куки (cookies) или сессий (sessions), что позволяет сохранять информацию между запросами от клиента.

#вопросы_с_собеседований
11👍3🌚3
Введение в CodefyPHP

Эта статья представляет новый PHP-фреймворк под названием CodefyPHP, который был выпущен недавно. Фреймворк предназначен для разработки сложных приложений с использованием Domain-Driven Design (DDD), CQRS (Command Query Responsibility Segregation) и Event Sourcing.

CodefyPHP не является полноценным фреймворком, как Symfony, Codeigniter, Yii2, FuelPHP или Laravel, но он содержит компоненты, такие как маршрутизация, миграции базы данных, реализации множественных стандартов PSR и шаблонизация. Фреймворк обладает рядом функциональностей, включая инструменты командной строки (CLI) для генерации миграций, контроллеров, промежуточного ПО, поставщиков услуг и других элементов. Он также включает поддержку тестирования (Test-Driven Development) и два движка шаблонов.

🌟 CodefyPHP предоставляет несколько выдающихся функций:

✔️Codex CLI: Интерфейс командной строки для генерации миграций, контроллеров, сервис-провайдеров и даже запуска сервера разработки! 💻

Примеры команд:

php codex serve - Запустить сервер разработки
php codex stub:make Users_controller - Создать UsersController
php codex migrate:generate CreateUsersTable - Генерировать миграцию для создания таблицы пользователей

✔️Движок миграций базы данных: Простой способ контролировать версии базы данных с миграциями! 🗃️

✔️Двойные шаблонизаторы: CodefyPHP включает движок шаблонов Scaffold с нативной и компилируемой реализацией! 🎨

✔️TDD встроен в проект: При создании нового проекта с помощью стартера приложений, он включает PestPHP для тестирования с учетом разработки (TDD)! 🧪

✔️Другие функции: Двойные строители запросов, инжектор для инициализации, маршрутизатор и адаптеры для куков, сессий и кэш-хранилища.
🥱15👍42
Как написанный на Symfony Kbin покоряет Threadiverse

Здесь рассказывается о платформе, являющейся аналогом Reddit, написанной на Symfony - Kbin.

Помимо рассказа о преимуществах платформы автор поведал еще и о том что у неё под капотом, а именно:

✔️Symfony 6.1
✔️API Platform
✔️Schema Generator 3

и многое другое
3👍3
Это подробное сравнение трех различных технологических стеков, используемых для создания расширенных поисковых систем на основе движка Elasticsearch. Автор оценивает Symfony (PHP), Flask (Python) и Spring Boot (Java) по различным критериям, таким как удобство использования, настройка локальной среды, создание каркаса проекта, документация по API, интеграция с Elasticsearch, создание поискового сервиса и построителей запросов, ошибки отладки и скорость кодирования.

Результаты сравнения кратко представлены в таблице конце статьи

Статья намекает на продолжение, в котором, вероятно, будут рассмотрены аспекты производительности этих фреймворков.
👍4😁32
#дайджест #phpdevjob

Вакансии недели для Москвы 👨🏻‍🏫

PHP программист в iStudio
Москва. Сеть магазинов.
Подробнее

PHP-разработчик в Сервер в Аренду
Москва. Хостинг.
Подробнее

PHP-разработчик в Автомакон
Москва. Системный интегратор.
Подробнее

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

PHP-программист в Флюид-Лайн
Москва. Импорт и продажа арматуры для нефтегазовой, химической и других отраслей.
Подробнее

Понравились вакансии?
👍 — да
👎 — нет
🥱1911👍1😁1
Как относитесь к vim? Хотели ли изучить когда-то?
⬇️⬇️⬇️
🥱16🔥8🌚3
Laravel без файлов .env

🔎Автор столкнулся с проблемой определения конфигурации в Laravel при использовании Docker и других окружений.

🔧 Для решения этой проблемы он создал новый подход, основанный на создании базового класса Environment, который содержит все необходимые атрибуты для конфигурации.

🚀 Разработчики расширяют этот класс, заполняя информацию для своих конкретных окружений. Для локальной разработки и тестирования PHPUnit автор использует файл .env.php, который не требует специальных настроек и коммитится в систему контроля версий.

⚙️ Он также отключил использование пакета phpdotenv, что улучшило время выполнения автоматизированных тестов.

Новый подход позволил упростить настройку окружения для команды разработчиков и улучшил производительность тестирования.
🥱112🤔2
Что такое CQRS?

CQRS (Command Query Responsibility Segregation) — это архитектурный паттерн, который предлагает разделить операции записи и чтения данных в приложении на две отдельные ветки. Вместо того, чтобы использовать единый интерфейс для обеих операций, CQRS предлагает использовать различные модели данных для команд и запросов. Это позволяет оптимизировать каждую модель для конкретных задач и улучшить производительность приложения.

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

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

Интересная статья на эту тему

#вопросы_с_собеседований
👍14
PDFPintar

PDFPintar — это веб-приложение с применением искусственного интеллекта, предназначенное для взаимодействия с PDF-файлами. Он построен с использованием Laravel и React.
👍3
Code smells — обзор на примере PHP

🔎В статье рассказывается о понятии "code smells" («кода с душком») — это плохие практики в программировании, которые делают код запутанным и сложным для понимания. Автор делится своим опытом, рассказывая, как столкнулся с проблемами безопасности и масштабирования из-за запутанного кода.

Он описывает основные признаки code smells, такие как:
🟠длинные методы
🟠большие классы
🟠неудачные наименования переменных

и так далее

✔️Для каждого признака он предлагает рекомендации по устранению проблем и подчеркивает важность регулярной проверки кода на наличие этих проблем.
9🥱2
Сколько у вас мониторов?
5👍2
🌐 В современной веб-разработке часто возникает сложность в обогащении моделей данных дополнительными атрибутами, которые не хранятся непосредственно в базе данных, но вычисляются на основе существующих полей. Эти метаданные включают в себя бизнес-правила и логику, которые могут быть настроены для отдельных экземпляров модели.

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

🔍 Статья представляет трейт HasMetaAttributes, который обладает такими свойствами как:

✔️Работает в Laravel
✔️Добавляет мета-атрибуты к моделям Eloquent
✔️Включение/выключение глобально или для отдельных экземпляров модели

Этот трейт позволяет добавлять мета-атрибуты к моделям Eloquent, вычисляя их на основе определенных бизнес-правил. С помощью этого трейта можно включать или выключать мета-атрибуты глобально или для отдельных экземпляров модели.
2👍1
Новый #дайджест новостей по PHP за неделю:

🔎 PHP 8.3.0 RC 4 доступен для тестирования. Команда PHP рада объявить о выпуске PHP 8.3.0, RC 4. Это четвертый кандидат на выпуск, продолжающий цикл выпуска PHP 8.3, примерный план которого указан в PHP-вики.

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

🔎Неделя Symfony #876 (9–15 октября 2023 г.) — На этой неделе разработка была очень интенсивной в рамках подготовки к выпуску Symfony 6.4 и 7.0 через 6 недель. Одной из наиболее важных задач было добавление совместимости Doctrine ORM 3 и DBAL 4 в Symfony 5.4 и выше. Также обновили код, чтобы использовать некоторые современные функции PHP 8.
👍121
Чистые контроллеры в Symfony

Цикл статей состоящий из трех частей

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

Во второй части рассматривается проблема форматирования объектов в контроллерах Symfony-приложения и как ее можно решить. В контексте двух эндпоинтов API, возвращающих информацию о книгах (одна книга и список книг), автор представляет подход к делегированию форматирования ответов от контроллеров к сериализатору Symfony через событие kernel.view.

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

Автор предлагает использовать Symfony kernel events для централизованной десериализации и валидации запросов, чтобы поддерживать контроллеры в чистом виде, лишенных логики валидации.
👍231
Видео: Создание списка дел с помощью Laravel и Livewire 3

В этом видео вы узнаете, как создать свой собственный список дел с помощью Livewire 3, sqlite и Laravel буквально за несколько минут
4🌚3🥱2
Ищем IT-специалистов, желающих поговорить o SQL

Заполните анкету – https://forms.gle/7X6kuAbE93ckBYcX7
Мы напишем вам, чтобы договориться о времени😉

Кого ищем?
Специалистов, которые учатся SQL самостоятельно и планируют углубить свои знания.

Зачем нам это нужно?
Мы собираемся запускать новый продукт по SQL, хотим сделать его максимально полезным и отвечающим потребностям клиентов.

Как будет проходить?
Длительность до 30 минут в формате онлайн, в удобное для вас время.
Мы пообщаемся про реальные задачи связанные с базами данных и вариантах обучения.

Чего точно не будет:
Никаких продаж с нашей стороны.

Благодарность:
Всем участникам интервью мы дадим в подарок курс по Machine learning c практикующим преподавателем из Stripe.

Приходите, будет уютно🙌
Скрытый код

🔎В данной статье автор рассматривает проблему взаимодействия между расширениями Xdebug и OPcache в PHP-приложениях, особенно при использовании встроенного веб-сервера PHP. Проблема заключается в том, что Xdebug и OPcache переопределяют обработчик компиляции файлов PHP, и это может привести к тому, что точки останова (breakpoints), установленные в редакторе кода, не работают правильно при каждом запросе к приложению.

Автор обнаружил, что порядок загрузки этих расширений в php.ini имеет большое значение. Если OPcache загружается перед Xdebug, то он может "потерять" точки останова, так как не вызывает обработчик компиляции файлов, установленный Xdebug.

Для решения этой проблемы автор предлагает несколько вариантов:

🟠Загружать Xdebug после OPcache: Согласно документации, Xdebug должен быть загружен после OPcache в php.ini. Это гарантирует правильное взаимодействие между расширениями.

🟠Отключить OPcache: Если OPcache не используется в проекте, его можно просто отключить, установив opcache.enable=0 в php.ini.

🟠Контролировать порядок загрузки через наименование файлов конфигурации: Если используется несколько файлов конфигурации (например, xdebug.ini и opcache.ini), можно управлять порядком загрузки, именуя файлы таким образом, чтобы Xdebug загружался после OPcache. Например, xdebug.ini можно назвать 99-xdebug.ini, а opcache.ini 10-opcache.ini, чтобы убедиться, что Xdebug загружается последним.

🟠Убедиться, что Xdebug и OPcache указаны в правильном порядке в одном файле конфигурации: Если используется только один файл конфигурации, убедитесь, что строки zend_extension=opcache и zend_extension=xdebug расположены в правильном порядке.

Автор также упоминает о том, что начиная с версии Xdebug 3.3, в Diagnostic Log будет включено предупреждение о том, что Xdebug должен быть загружен после OPcache. Предупреждение будет содержать ссылку на документацию, объясняющую проблему и возможные решения.
👍81
Какие методы авторизации используют для построения API?

При построении API в PHP разработчики обычно используют различные методы аутентификации и авторизации, чтобы обеспечить безопасность и контроль доступа к ресурсам:

1. Токены доступа (Access Tokens): Это один из наиболее распространенных методов для аутентификации в API. После успешной аутентификации пользователь получает токен, который затем отправляется с каждым запросом API. Сервер API проверяет токен для разрешения доступа к ресурсам.

2. HTTP Basic Authentication: Пользовательские учетные данные (имя пользователя и пароль) отправляются в заголовке запроса. Однако, этот метод не является безопасным, так как учетные данные могут быть перехвачены.

3. Bearer Token Authentication: Это расширение для токенов доступа, где токен отправляется в заголовке Authorization как Bearer [access_token].

4. JWT (JSON Web Tokens): JWT - это компактный и самосодержащийся способ представления информации между двумя сторонами. Он может быть подписан (для обеспечения целостности данных) и зашифрован (для обеспечения конфиденциальности). JWT часто используются вместе с токенами доступа.

5. OAuth 2.0: Это открытый стандарт протокола аутентификации и авторизации, позволяющий приложениям получать доступ к ресурсам от имени пользователя. OAuth 2.0 поддерживает различные методы авторизации, включая авторизацию по паролю, авторизацию по коду подтверждения, и т.д.

6. API Keys: Каждый запрос к API содержит уникальный ключ (токен) для аутентификации. Обычно, этот ключ передается в заголовке запроса.

#вопросы_с_собеседований
🥱10👍82😁1
Создание отказоустойчивого кода: использование возможностей объектов-значений

Эта статья обсуждает концепцию объектов-значений (value objects) в программировании и почему они являются полезным инструментом для улучшения качества приложения и улучшения читаемости кода.

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

Статья также подчеркивает разницу между объектами-значениями и объектами передачи данных (Data Transfer Objects, DTOs). В отличие от DTO, объекты-значения учитывают бизнес-логику и обеспечивают корректность данных, а не только их типы. Это делает объекты-значения более надежными и предсказуемыми при обработке данных в приложении.
👍81