Библиотека пхпшника | 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
Упрощение интеграции API с Http-фасадом Laravel

📝 В статье рассматривается подход к интеграции сторонних API в Laravel с использованием фасада Http. Использование фасада Http Laravel обеспечивает последовательную структуру для всех интеграций сторонних сервисов, упрощает тестирование и мокирование, а также уменьшает зависимость от внешних SDK.

🔍 В примере в статье демонстрируется интеграция API Google Books. Первым шагом является добавление конфигурации API Google Books, включая ключ API, в переменные окружения Laravel. Затем автор создает переиспользуемый класс ApiRequest для построения HTTP-запросов к API с возможностью легкой настройки заголовков, параметров запроса и данных тела.

🚀 Далее представлен абстрактный класс ApiClient, служащий базовым классом для выполнения HTTP-запросов к любому API. Класс предоставляет метод для отправки ApiRequest и включает настройки по умолчанию, такие как прием JSON и базовый URL. Класс GoogleBooksApiClient расширяет этот абстрактный класс, указывая базовый URL для API Google Books и обрабатывая авторизацию, специфичную для данного API, например, передачу ключа API в виде параметра запроса.

📚 В статье также представлен пример действия QueryBooksByTitle, которое использует GoogleBooksApiClient для запроса книг по названию из API Google Books.
👍511🥰1🌚1
Мы запускаем серию исследований — и вы можете нам в этом помочь!
«Библиотека программиста» выпустит несколько статей, в которых мы проведем полноценные исследования.

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

Присылайте интересующие вас темы в комментарии — интересные мы возьмем в работу и поделимся с вами результатами 💙
2🔥1
Как добавить вход по JWT в проект Symfony 6

Здесь показано, как реализовать систему аутентификации с использованием JSON Web Token (JWT) для вашего проекта Symfony 6. Вот основные шаги:

1️⃣Создание проекта Symfony:
Используйте Symfony CLI для создания нового проекта

2️⃣Установка необходимых пакетов:
Установите пакеты для Doctrine ORM, MakerBundle и LexikJWTAuthenticationBundle.

3️⃣Создание сущности пользователя:
Создайте сущность пользователя с помощью MakerBundle, укажите класс, свойства и алгоритм хеширования пароля.

4️⃣Настройка безопасности:
Измените файл config/packages/security.yaml для настройки брандмауэров для входа и конечных точек API.
Определите правила контроля доступа для ограничения доступа к конечным точкам на основе ролей пользователя.

5️⃣Настройка маршрутов:
Определите маршруты для конечных точек входа и API в файле config/routes.yaml.

6️⃣Отправка запроса на вход:
Используйте cURL для отправки POST-запроса к конечной точке входа и получения токена JWT.

7️⃣Создание контроллера API:
Создайте контроллер API с помощью MakerBundle.
Измените контроллер для использования TokenStorageInterface для получения email вошедшего пользователя.

8️⃣Отправка аутентифицированного запроса:
Используйте cURL для отправки POST-запроса к защищенной конечной точке API с полученным токеном JWT.
👍5🥱1
Еще один #дайджест новостей по PHP за неделю:

🔎PhpStorm 2023.3 Beta 2

🔎Выпущена версия CakePHP 5.0.3. — Улучшения включают в себя: Обновление пути к плагину_class_error.php. Расширен тип $format в TimeHelper::format(). Поддержка PHP 8.3 и многое другое.

🔎Выпущена версия Laravel 10.33 — На этой неделе команда Laravel выпустила версию 10.33 с новыми вспомогательными методами чисел, проверочными утверждениями о пакетах, существующих в цепочке заданий, правилом проверки шестнадцатеричного цвета и многим другим.

🔎Выпущена Symfony 6.4.0

🔎Неделя Symfony #882 (20–26 ноября 2023 г.) — На этой неделе деятельность разработчиков Symfony была сосредоточена на исправлении ошибок и доработке новых функций будущих версий Symfony 6.4 и 7.0, которые выйдут на следующей неделе.
👍3😁1🎉1
Laravel 10 представил улучшенный Number Format Helper с функциями, направленными на упрощение форматирования чисел, процентов, валюты, размеров файлов и создания читаемых представлений:

1️⃣Number::format(): Позволяет разработчикам легко форматировать числовые значения в строку, специфичную для локали, поддерживая опции точности, максимальной точности и локали.

2️⃣Number::percentage(): Упрощает получение процентного представления значения, предлагая опции точности и локали для настройки.

3️⃣Number::currency(): Облегчает форматирование денежных значений с опциями для типа валюты и локали, предоставляя удобный способ представления финансовой информации.

4️⃣Number::fileSize(): Предоставляет интуитивный способ представления размеров файлов в читаемом формате с настраиваемой точностью.

5️⃣Number::forHumans(): Предоставляет читаемый для человека формат числовых значений, делая большие числа более понятными и предоставляя чистое представление.
👍9🥱3
Ручная пила для PHP-монолита

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

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

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

Библиотека TSQM представлена как открытое решение, обеспечивающее легкую интеграцию в существующие PHP-монолиты. В статье делается вывод о затратах на использование, планах развития и сравнении с другими решениями, такими как Temporal, указывая на простоту и специфичность применения в качестве основных причин выбора TSQM вместо более сложных альтернатив.
3🥰2🥱2👍1
Лучшие практики использования перечислений

Статья обсуждает лучшие практики использования перечислений (Enumerations), введенных в версии 8.1.

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

Здесь рассматриваются различные практики, как положительные, так и отрицательные, с целью прояснения использования перечислений.
👍6🌚1
Что такое JIT? Как он работает?

JIT (Just-In-Time) компиляция представляет собой метод оптимизации выполнения кода, при котором код не компилируется заранее в процессе разработки, а только перед фактическим его выполнением во время работы программы. Это позволяет улучшить производительность программы за счет оптимизаций, которые могут быть применены с учетом конкретных условий выполнения.

Как это работает:

Исходный код на PHP: Начинаем с написания нашего кода на PHP, который является языком сценариев с динамической типизацией.

Компиляция в промежуточный код (opcode): Исходный код PHP компилируется в промежуточный байт-код, который представляет собой некий промежуточный представитель нашего кода, близкий к машинному коду, но все еще независимый от конкретной аппаратной платформы.

Исполнение байт-кода: Этот байт-код может быть интерпретирован непосредственно виртуальной машиной PHP (Zend VM), что происходит по умолчанию. Однако, в контексте JIT, в определенный момент, когда интерпретатор PHP обнаруживает, что некий участок кода используется достаточно часто, он может решить скомпилировать этот участок кода в машинный код «на лету».

JIT-компиляция: В процессе выполнения программы JIT-компилятор анализирует и оптимизирует участки кода, которые часто выполняются. Это позволяет улучшить производительность, так как оптимизации адаптированы к конкретному исполняющемуся коду и платформе.

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

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

#вопросы_с_собеседований
👍172
Как установить PHP 8.3 на Ubuntu 22.04

Статья предоставляет пошаговое руководство по установке PHP 8.3 на Ubuntu 22.04 и настройке локальной среды программирования через командную строку.
😁114🥰1
Forwarded from Библиотека программиста | программирование, кодинг, разработка
api-protocols.pdf
784.1 KB
💡Развитие протоколов API в 2023 году: по мотивам статьи Alex Xu в блоге Postman

В PDF-файле — обзорная демонстрация, а в статье вас ждет подробный взгляд на шесть самых популярных протоколов API с акцентом на преимущества и проблемы каждого:

1️⃣ REST
2️⃣ Webhooks
3️⃣ GraphQL
4️⃣ SOAP
5️⃣ WebSocket
6️⃣ gRPC

💬 Какой используется в вашем проекте? Делитесь в комментариях мыслями по данной теме👇

#проектирование_систем
👍5😁1🌚1
Xdebug в качестве интерактивной оболочки (REPL) в Phpstorm

Здесь рассказывается о том, как использовать консоль Xdebug в качестве интерактивной оболочки для PHP. Проблема заключается в отсутствии подобной интерактивной консоли в Phpstorm, подобной той, что доступна для JavaScript в инструментах разработчика браузера.

Автор предлагает использовать консоль Xdebug, которая интегрирована в Phpstorm, обеспечивая автодополнение кода прямо из проекта и предоставляя удобные функции, которых нет в других REPL-интеграциях.
😁7👍1
🧑‍💻 Статьи для IT: как объяснять и распространять значимые идеи

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

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

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

👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
🥰2😁1🎉1
Обработка ошибок

Статья обсуждает важность эффективного управления ошибками в программном обеспечении для обеспечения лучшего опыта пользователя.

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

Успешное применение этих практик помогает создать стабильное и отзывчивое программное обеспечение в условиях быстро меняющегося мира, где пользователи ценят быстроту и эффективность.
👍3😁3👏1
#хочу_спросить

Задавайте любые вопросы о программировании и получайте ответы от пользователей. В комментариях под постом укажите #язык, #стек и/или #библиотеку, по которым задаете вопрос.
Зачем нужно кэширование? Какую проблему оно решает?

Зачем нужно кэширование:

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

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

Уменьшение задержек для конечных пользователей: Кэширование позволяет уменьшить время загрузки страниц для конечных пользователей, так как часть данных уже находится на клиентской стороне или близко к ней (например, в CDN — Content Delivery Network).

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

Проблемы, которые решает кэширование:

Высокая нагрузка на сервер: Когда веб-приложение сталкивается с большим количеством запросов, кэширование может помочь снизить нагрузку на сервер и улучшить отклик системы.

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

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

Оптимизация работы с внешними API: Если веб-приложение взаимодействует с внешними API, кэширование может снизить задержки, связанные с запросами к этим внешним сервисам, и повысить отказоустойчивость.

#вопросы_с_собеседований
🥰7🥱5👍1👏1🎉1
Разработка пакетов Laravel: ключевые шаги к созданию эффективного инструмента

🔎Основное внимание уделяется значению экосистемы пакетов в Laravel, предоставляющей возможности для создания качественных приложений. Пакеты рассматриваются как основной способ добавления функциональности в проекты Laravel, включая стили, скрипты, бизнес-логику и интеграции с API. Автор подчеркивает, что код пакета может быть автономным или служить дополнением к конкретному фреймворку, а также может разрабатываться разными разработчиками.

🛠️В статье рассматриваются ключевые концепции разработки пакетов, такие как ServiceProvider, Facades, и Contracts, которые обеспечивают стабильную работу приложений от тестирования до продакшна. Особое внимание уделяется 🔧ServiceProvider как точке контакта между контейнером приложения и пакетом, управляющей всеми ресурсами приложения.

⚖️Освещаются как плюсы, так и минусы использования пакетов. Среди преимуществ отмечается 📈масштабирование проектов, 🏗️улучшение структуры, 🧰инкапсуляция бизнес-логики и стимулирование 🔄повторного использования кода. Среди недостатков упоминаются возможные проблемы с зависимостями, наличие ненужных функций в широко используемых пакетах, прекращение поддержки разработчиком и несовместимость версий.

Также предоставляется подробное руководство по подготовке и разработке пакета, включая создание структуры каталогов, файлов конфигурации и классов ServiceProvider. Приводится шаг за шагом процесс инициализации файла composer.json, а также объясняется, как связать Laravel-приложение с созданным пакетом.
7👍2👏1🥱1👾1