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

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

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

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

РКН: https://gosuslugi.ru/snet/67a5d13cd6fa92100ee6f68b
Download Telegram
​​Как бы вы импортировали 50-гигабайтный файл xml в базу данных?
👍5🥱2
В статье рассматривается проблема написания тестов для класса, который использует пакет Browsershot для генерации PDF-файлов. Автор начинает с введения в необходимость создания приложений, способных экспортировать отчеты или страницы в формат PDF, и упоминает ранее использованные библиотеки для этой задачи. Затем он представляет Browsershot как один из лучших пакетов для генерации PDF, обосновывая его простотой настройки.

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

Автор предлагает решение этой проблемы с использованием библиотеки Mockery для имитации поведения класса и проверки вызовов его методов. Он также обсуждает сложности, связанные с мокированием статических методов в Browsershot, и предлагает альтернативный метод с использованием инъекции зависимостей. Это позволяет сделать мокирование более эффективным и улучшить тестируемость класса.
👍31
Видео: PHP больше не отстой

PHP в 2023 году сильно отличается от PHP в 2012, в видео рассказывается о фишках, которые появились за это время, благодаря которым PHP не только не теряет популярность, а наоборот, становится еще более востребованным.
💯15🌚6👍31🥱1
Новый #дайджест новостей по PHP за неделю:

🔎 Выпущена версия PhpStorm 2023.2.2, включающая множество исправлений ошибок и улучшений качества работы.

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

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

🔎Неделя Symfony № 872 (11–17 сентября 2023 г.) — На этой неделе Symfony объявила об окончании поддержки Twig 2 и выпуске версии безопасности для пакета symfony/ux-autocomplete.
👏51👍1
Понимание жизненного цикла запроса, сервисного контейнера и фасадов

Здесь обсуждается важность понимания того, как работает приложение Laravel, и показан упрощенный обзор ключевых концепций. Она начинается с глоссария, где объясняются термины, такие как "Bootstrap" и "Kernel" (ядро).

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

Выделено, что точкой входа в приложение Laravel является файл public/index.php, который загружает Composer для загрузки классов и извлекает экземпляр приложения Laravel. Затем запросы направляются либо в HTTP-ядро, либо в консольное ядро, которые действуют как центральные точки для обработки запросов и выполнения промежуточного программного обеспечения.

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

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

Фасады описываются как удобный способ доступа к сервисам, и предоставлен фрагмент кода из файла маршрутов.
👍9🥱32🤔1
Эта статья рассматривает методы проверки частей HTML-ответа в рамках HTTP-тестирования в Laravel. Автор статьи объясняет, как можно использовать компонент Symfony DomCrawler для анализа и навигации по DOM-дереву HTML-ответа и проверки важного контента.

Автор предлагает создать макрос в Laravel, который позволит более удобно использовать DomCrawler для тестирования. Этот макрос позволяет легко создавать экземпляры Crawler (объектов DomCrawler) из HTTP-ответа и выполнять различные проверки и манипуляции с DOM-деревом.

Статья также предоставляет примеры использования этого макроса, включая проверку наличия определенных элементов в HTML-ответе и извлечение определенной части DOM-дерева для дальнейшей проверки.
4👍1
Новые каналы по PHP🎉

Готовимся к собеседованиям по PHP и проверяем себя на практических задачках: «Библиотека программиста» запустила два канала специально для PHP-разработчиков и тех, кто хочет ими стать👨‍🏫

Подписывайтесь:
👉Библиотека собеса по PHP — тут мы готовимся к интервью
👉Библиотека задач по PHP — тут решаем задачи, проходим тесты и изучаем код
👍51😍1
Валидация ключей SSH на Laravel

Здесь рассматривается разработка функционала для валидации и сохранения SSH-ключей пользователей в приложении. Автор сталкивается с задачей эффективной проверки SSH-ключей и демонстрирует свое решение.

Он создает класс с именем ValidateSsh, который использует команду ssh-keygen с флагом -lf для проверки валидности SSH-ключей. Класс сохраняет ключ как файл, выполняет команду и затем удаляет файл, если проверка прошла успешно.

Автор также создает пользовательское правило валидации с именем IsSshKeyValid и использует его в правилах валидации приложения. Он предоставляет юнит-тесты для класса ValidateSsh и HTTP-тесты, чтобы убедиться, что SSH-ключи правильно валидируются при регистрации пользователей.
4
Что такое динамические переменные?

Вы можете передать имя одной переменной в другую, а затем использовать эту переменную “динамически”.

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

#вопросы_с_собеседований
6👾1
Источник читабельности

Здесь излагаются правила, следуя которым можно начать писать намного более читабельный и понятный другим людям код
👍3
Синглтоны и как их использовать

В этой статье автор выражает свою негодование по отношению к использованию синглтонов в программировании и обсуждает их недостатки. Вот основные моменты:

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

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

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

Автор предлагает альтернативу синглтонам, основанную на принципе Dependency Injection (внедрение зависимостей) и использовании интерфейсов. Это позволяет избежать скрытых зависимостей, упрощает тестирование и делает код более понятным.

Он также отмечает, что синглтоны могут быть оправданы в случаях, когда они являются неизменными или не влияют на поведение системы при их удалении. Примерами таких синглтонов являются логгеры или сервис-локаторы.
5👍2
Безопасные PHP API с проверкой подписи с использованием OpenSSL

Здесь обсуждается важность проверки подлинности запросов в API и прилагается руководство по реализации проверки подписи API с использованием PHP и библиотеки OpenSSL.

Основные этапы процесса проверки подписи API с использованием OpenSSL включают:

1️⃣Генерация пары ключей (открытый и закрытый) для шифрования и дешифрования данных.
2️⃣Загрузка ключей в приложении.
3️⃣Генерация подписи на стороне клиента с использованием закрытого ключа.
4️⃣Проверка подписи на стороне сервера с использованием открытого ключа.
5️⃣Использование SDK для упрощения вызовов API и проверки подписи.

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

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

PHP-программист в Intelsib
Новосибирск. Поисковое продвижение, контекстная реклама, поисковый аудит.
Подробнее

Backend-разработчик в Itwis
Новосибирск. Разработка информационных бизнес-систем.
Подробнее

PHP-программист в ЛЕКО
Тверь. Разработка крупных интернет-проектов.
Подробнее

Backend-developer в Формула
Москва. Сеть автошкол.
Подробнее

Программист PHP в Intask
Москва. Разработка ПО для электронной торговли.
Подробнее

Понравились вакансии?
👍 — да
👎 — нет
😁10👍31
🦸 9 способов настройки градиента цели для поддержания мотивации

Разбираемся, как настроить себя идти до конца, преодолевая препятствия и лень.

Читать статью

#саморазвитие
🥱8👍2
#хочу_спросить

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

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

Политика поддержки версий PHP для PHP-приложений:

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

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

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

Политика поддержки версий PHP для PHP-пакетов:

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

Поддержка нескольких версий PHP в пакете может упростить обновление PHP-приложений, использующих этот пакет.

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

Статья также обсуждает пользу и сложности, связанные с обновлением PHP-пакетов и приложений, а также воздействие на окружающую среду и пользователей. Автор подчеркивает важность управления ожиданиями и коммитмента к политике поддержки версий PHP для облегчения обновлений и продвижения экосистемы PHP вперед.
👍32
Напишите функцию Фибоначчи.

Числа Фибоначчи – это ряд чисел, в котором каждое следующее число равно сумме двух предыдущих: 1, 1, 2, 3, 5, 8, 13…

Конечно, нужно понимать формулу для того, чтобы заложить ее в код:

Fn = Fn-1 + Fn-2 , n — порядковый номер элемента.
👍13😁41
Руководство по call-site variance

Гайд описывает концепцию "call-site variance" (вариантность на момент вызова) в контексте использования языка PHP с использованием инструмента PHPStan для статической типизации. Он объясняет, как можно управлять вариантностью (ковариантностью и контравариантностью) в интерфейсах и функциях, чтобы обеспечить безопасность типов данных.
👍31