Библиотека пхпшника | 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
Перевод сущностей в EasyAdmin с помощью DoctrineBehaviors

В данной статье рассматривается способ перевода сущностей в EasyAdmin. Создается сущность "Article", где можно перевести заголовок, слаг и содержание на несколько языков, а также добавить возможность фильтрации по переводимым полям.
👍3
Какие процессы происходят, когда пользователь вводит в браузере URL?

Когда пользователь вводит URL в браузере, происходит следующая последовательность процессов:

1. Парсинг URL: Браузер анализирует введенный URL, чтобы выделить протокол, доменное имя и путь к ресурсу.

2. DNS-поиск: Браузер отправляет запрос к DNS-серверу для получения IP-адреса, связанного с доменным именем. DNS-сервер возвращает IP-адрес браузеру.

3. Установка TCP-соединения: Браузер устанавливает TCP-соединение с веб-сервером, используя полученный IP-адрес и порт (обычно порт 80 для HTTP или порт 443 для HTTPS).

4. Отправка HTTP-запроса: Браузер отправляет HTTP-запрос на сервер, включая метод запроса (GET, POST и т.д.), заголовки и URI (Uniform Resource Identifier), который содержит запрошенный ресурс.

5. Обработка и выполнение запроса на сервере: Веб-сервер получает HTTP-запрос, выполняет обработку и обращается к соответствующему приложению или файлу. На этом этапе сервер может также взаимодействовать с базой данных или другими серверами для получения данных, необходимых для формирования ответа.

6. Подготовка HTTP-ответа: Сервер формирует HTTP-ответ, включающий статус запроса, заголовки и содержимое. Код состояния (например, 200 для успешного запроса) указывает на результат обработки запроса.

7. Передача HTTP-ответа: Сформированный HTTP-ответ передается обратно по TCP-соединению на браузер клиента.

8. Обработка HTTP-ответа: Браузер получает HTTP-ответ, анализирует статус запроса и заголовки. Если запрос был успешным, браузер начинает загружать и отображать содержимое ответа (HTML, CSS, JavaScript, изображения и т.д.).

9. Рендеринг и отображение: Браузер обрабатывает полученное содержимое, выполняет интерпретацию HTML, применяет стили CSS, обрабатывает скрипты JavaScript и, в конечном итоге, отображает запрошенную веб-страницу на экране пользователя

#вопросы_с_собеседований
👍25🥱5🔥1
Решение проблем масштабирования PHP

Команда разработчиков столкнулась с проблемой памяти при экспорте данных в Excel файлы в PHP-проекте. Проблема заключалась в том, что каждый фоновый задача открывала файл, добавляла порцию записей и закрывала файл, что приводило к увеличению потребления памяти.

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

После преодоления кривого обучения команда смогла успешно реализовать новую систему экспорта, которая управляет памятью более эффективно и обеспечивает высокую производительность при обработке больших объемов данных. Для связи между PHP и Rust используется Redis и HTTP-вебхуки.
👍7🥱1
Verify Domain

PHP Verify Domain позволяет проверить принадлежность домена, проверив содержимое загруженного файла, метатеги и TXT-записи DNS. Вы могли наблюдать подобное поведение при проверке домена в таких сервисах, как "Google Search Console" и ...

Подробнее о пакете Verify Domain вы можете узнать из этой статьи.
🌚21
85% разработчиков готовятся к собеседованиям

Мы опросили студентов Proglib, которые устроились в международные компании, чтобы выяснить, как у них получилось успешно пройти собеседование?

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

Тренироваться можно самостоятельно, но если у вас не хватает мотивации заниматься регулярно, то рекомендуем курс «Алгоритмы и структуры данных»‎.

Подробности здесь – https://proglib.io/w/3b4ab5e4

А также до 15 октября по промокоду PROG20OCT вы получите дополнительную скидку 20%.

⚡️Начните с бесплатной части уже сегодня – https://proglib.io/w/3b4ab5e4
🥱52👍1
Match vs Switch

В статье рассматривается нововведение в PHP 8 - выражение match, сравнивая его с уже существующим оператором switch. Статья подчеркивает основные различия между match и switch, включая возможность match возвращать значение, использование break в switch, обработку ошибок и строгое сравнение в match. Кроме того, статья подчеркивает, что match и switch имеют различные сценарии использования и не являются взаимозаменяемыми.
🥱9👍31
Stat cache - это механизм кэширования результатов низкоуровневых операций чтения информации о файлах (например, права доступа, размер, время последнего изменения) в PHP. Когда вы вызываете несколько операций работы с файловой системой на одном и том же файле быстро подряд, PHP использует stat cache для оптимизации производительности.

Основной момент, который стоит отметить, заключается в том, что stat cache кэширует информацию только для одного файла. Если PHP выполняет низкоуровневую операцию на файле и он не был в кэше ранее, он перезапишет предыдущие данные, связанные с предыдущим файлом.

Статья также предоставляет пример того, как могла бы быть реализована stat cache на уровне PHP, и указывает на важность знания о том, как она работает. Она также подчеркивает, что для избежания ошибок в PHP коде, связанных с этим механизмом, иногда приходится использовать функцию clearstatcache(), чтобы очистить кэш.
👍91
Persistent-request библиотека для надежных запросов

В этой статье рассказывается о создании библиотеки PersistentRequest для гарантированного выполнения запросов и их обработки в среде Laravel.

🎯 Цели создания библиотеки:

Работа с Laravel
Легкость и гибкость использования
Минимум зависимостей

🔍 Что вы узнаете:

Как установить библиотеку через Composer
Инициализация сервиса и создание объектов запросов
Гарантированное выполнение запросов с возможностью повтора
Гибкая настройка логики обработки ответов

🌟 Преимущества использования:

Гарантированное выполнение запросов в асинхронной среде
Легкость настройки и минимум зависимостей
Пользовательская обработка ответов и возможность повторных попыток
5👍1
Объявления типов в Symfony 7.0

Статья рассказывает о длительной инициативе Symfony по добавлению всех возможных объявлений типов в PHP в свой код. Этот процесс начался в Symfony 5, продолжился в Symfony 6 и приближается к завершению в Symfony 7.0.

Добавление объявлений типов требует осторожности, так как это нарушает обратную совместимость в большинстве случаев. В соответствии с процессом выпуска Symfony, такие изменения разрешены только в мажорных версиях (например, 6.0 и 7.0).

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

Цель Symfony 7.0 - добавить каждое возможное объявление типа в PHP. Она включает в себя:

🟠Добавление типов возвращаемых значений для всех методов, которые были пропущены или упущены в Symfony 6.0;
🟠Добавление типа 'void' там, где это применимо;
🟠Добавление типов для всех свойств класса, включая публичные и защищенные свойства.
18👍3
Что такое 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