Библиотека пхпшника | 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
Что такое инкапсуляция/наследование/полиморфизм?

Инкапсуляция. Это механизм, который объединяет данные и методы, манипулирующие этими данными, и защищает их от внешнего вмешательства или неправильного использования. Когда методы и данные объединяются таким способом, создается объект. Т.е. переменные состояния объекта скрыты от внешнего мира. Изменение состояния объекта (его переменных) возможно ТОЛЬКО с помощью его собственных методов. Можно сказать, что инкапсуляция подразумевает под собой сокрытие данных, что позволяет эти данные защитить.

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

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

#вопросы_с_собеседований
👍16🥱13
Список просмотров страницы в реальном времени с помощью Livewire

Статья рассказывает о решении проблемы взаимодействия операторов в системе электронной коммерции, где несколько операторов могут работать с одним заказом. Исходное решение было автоматической системой распределения заказов между операторами, но оно не учитывало отпуска операторов и сложность заказов. В статье предлагается решение под названием "On this page", которое позволяет операторам видеть, если кто-то уже просматривает заказ, и избегать пересечения работы.

Решение использует Laravel, Redis и Livewire. Оно отслеживает, какие страницы просматриваются операторами, и отображает список пользователей, просматривающих данную страницу. В статье предоставлен код для создания компонента Livewire "On this page" и шаблона для отображения пользователей.
5👍5
Здесь рассказывается об опыте разработчика, который столкнулся с проблемой производительности в своем приложении, использующем Symfony/Doctrine и PostgreSQL для работы с финансовыми операциями и тегами. Проблема возникла из-за медленных запросов, связанных с агрегацией данных по тегам.

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

Решение помогло улучшить производительность и оставить ClickHouse в резерве для будущих увеличений нагрузки.
👍51🥱1
​​Как бы вы импортировали 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