Библиотека пхпшника | 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
Какой длины должны быть классы — когда «чистый» код на самом деле не так уж и хорош

🔎
Это история о разработчике, который искал новую работу и наткнулся на вакансию компании, которая обещала ценить "чистый код", но с ограничением в 100 строк на класс.

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

Жесткие ограничения могут привести к ухудшению архитектуры программы и отвлечению разработчиков от создания качественных компонентов в пользу удовлетворения формальных требований.
👍6
Какие фронтенд технологии вам нравятся/предпочитаете использовать как PHP-разработчик? (JS-фреймворки, библиотеки и т.д.)
3
Ответьте на 3 вопроса, чтобы получить демо-доступ к курсу «Алгоритмы и структуры данных»

⚡️Получить демо, ответив на 3 вопроса – https://proglib.io/w/979a2896

В бесплатной части вас ждут:

1. Лекция «Производительность алгоритмов» от руководителя разработки Яндекс.Самокатов

2. Лекция «Итеративные сортировки и линейные сортировки» от аспирант департамента искусственного интеллекта ВШЭ

3. Практические задания после лекций

4. Ссылки на дополнительные материалы для самостоятельного изучения

Переходите и начинайте учиться уже сегодня!
🥱21👍1🌚1
📝 В статье обсуждаются различные подходы к моделированию операторов MongoDB в PHP для создания агрегационных конвейеров. Цель - найти лучший опыт разработчика при работе с зарезервированными ключевыми словами и сохранении читаемости кода. Рассматриваются несколько методов, включая функции с пространством имен, добавление суффиксов к именам функций, использование статических методов классов и хранение замыканий в переменных.

🌐 Первый метод: Функции в пространстве имен

Статья начинается с функций в пространстве имен, например MongoDB\Operator\eq для оператора $eq, но сталкивается с проблемами зарезервированных ключевых слов в PHP. Чтобы избежать конфликтов, рассматриваются варианты добавления префиксов, суффиксов или использования смайликов в именах функций.

🔠 Второй метод: Статические методы классов

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

🌀 Третий метод: Замыкания в переменных

В заключение идут замыкания, сохраненные в переменных, что позволяет использовать синтаксис, очень похожий на MongoDB, и при этом избегать конфликтов имен.
👍41
💻 20 лучших ноутбуков для программиста в 2023 году

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

На карточках перечислили самые производительные. Но для кодинга есть и другие важные параметры — остальные подборки смотрите в нашей статье.
😁13🥱4👍2
Еще один #дайджест новостей по PHP за неделю:

🔎PhpStorm 2023.3 EAP #4 — В этой сборке значительно переработали настройки пути включения PHP и реализовали возможность исключения каталогов и файлов из индексированных библиотек.

🔎Плагин Pest теперь поддерживается JetBrains. — Плагин Pest будет поставляться в комплекте с PhpStorm, начиная с версии 2023.3. Он будет разработан JetBrains, но исходный код останется открытым.

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

🔎Выпущена Symfony 7.0.0-BETA1 — Только что выпущена Symfony 7.0.0-BETA1. Здесь список наиболее важных изменений с версии 6.3.

🔎Неделя Symfony #877 (16–22 октября 2023 г.) — На этой неделе Symfony выпустила первую бета-версию Symfony 6.4 и первую бета-версию Symfony 7.0, чтобы вы могли протестировать их в своих собственных приложениях перед их окончательными выпусками.
👍4
PHP-соединения и транзакции

🟠Первая часть представляет подход к открытию соединений с базой данных через создание класса, который хранит конфигурационные данные в отдельном ini-файле. Идея заключается в том, что вместо того, чтобы включать чувствительные данные (например, хост, пользователь, пароль) напрямую в исходный код при подключении к базе данных, эти данные хранятся в отдельном конфигурационном файле (config.ini).

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

Она также рассматривает состояния транзакций (активное, частично подтвержденное, подтвержденное, неудавшееся и завершенное состояние). Важность аббревиатуры ACID (Atomicity, Consistency, Isolation, Durability) также подчеркивается.
🥱4👍2
Как настроить действительно быструю локальную среду разработки Laravel для Windows с красивыми URL-адресами (без Docker)

Эта статья представляет собой руководство по настройке быстрого и гибкого окружения разработки Laravel на Windows с использованием Windows Subsystem for Linux (WSL) и нативных установок PHP, MySQL и Nginx.

В статье представлены следующие шаги:

1️⃣Установка WSL на Windows 10 или Windows 11.
2️⃣Установка PHP в WSL с помощью apt.
3️⃣Установка Composer для управления зависимостями в Laravel.
4️⃣Установка MySQL в WSL.
5️⃣Создание нового проекта Laravel и настройка базы данных.
6️⃣Установка и настройка Nginx в WSL для обработки запросов к Laravel приложению.
7️⃣Применение настроек безопасности и оптимизация производительности, включая изменение пользователя и группы для Nginx и PHP-FPM.

Если верить автору, использование этой конфигурации позволило увеличить производительность на сложных операциях с 13 секунд до 1.5 секунды, что составляет увеличение в 800%. Это решение позволяет достичь быстрых времен ответа и более гибких настроек для разработки Laravel приложений под Windows.
https://getcomposer.org/installer
🥱16👍6
Одноразовые тесты

Проблема: Дублирование Middleware


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

Решение: Автоматизация сравнения Middleware

🚀 Использование php artisan route:list --json -v для получения данных о маршрутах и их middleware в формате JSON.
🔍 Сравнение данных до и после изменений с использованием утилиты для сравнения JSON.
🧐 Выявление различий в middleware и обнаружение несоответствий.

Результат: Безопасные Изменения и Уверенность

🎉 548 удалений и 359 добавлений в 111 файлах без ручного тестирования.
🛠️ Избежание ошибок благодаря точному выявлению изменений в middleware.
💪 Возможность внести изменения в проект с уверенностью, что автоматические тесты обнаружат проблемы.
8🤔4👍3
Класс содержит свойство, которое, в свою очередь, является объектом. Что будет содержать это свойство в клонированном объекте: ссылка на тот же дочерний объект или копию дочернего объекта? Что нужно сделать, чтобы это изменить?

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

Чтобы изменить это поведение и создать копию дочернего объекта в клонированном объекте, необходимо определить метод __clone() для класса. В этом методе можно явно создать копию дочернего объекта и присвоить ее свойству клонируемого объекта.

Пример реализации на фото

#вопросы_с_собеседований
👍11🥱63
Как гарантировать, что все маршруты в приложении Symfony имеют контроль доступа

Статья представляет собой руководство по автоматизированной проверке контроля доступа ко всем маршрутам в проекте Symfony. Она объясняет важность эффективного контроля доступа в Symfony, описывает, как настроить Symfony Firewall, предоставляет способы реализации контроля доступа для каждого маршрута и предоставляет два метода автоматизации проверки: использование инструмента ACCENT для проектов, использующих API Platform, и написание собственного скрипта для проектов без API Platform.

Текст также рассказывает о том, как использовать Symfony Security для контроля доступа к маршрутам, как написать скрипт для автоматической проверки наличия контроля доступа к каждому маршруту и как обеспечить безопасность новых маршрутов, добавляемых в проект. Он также подчеркивает важность внедрения проверки контроля доступа в процесс непрерывной интеграции для обеспечения высокого уровня безопасности в проекте Symfony.
👍31
Практика маршрутизации поддомена в локальной среде с помощью laravel

Статья рассказывает о том, как настроить локальное окружение для тестирования поддоменных маршрутов в Laravel.

Настройка DNS
Сначала необходимо настроить DNS так, чтобы каждый поддомен указывал на один и тот же хост. Для этого требуется добавить записи в файл hosts операционной системы. В Windows это файл C:\Windows\System32\drivers\etc\hosts, в Linux — /etc/hosts, в MacOS — /private/etc/hosts.

Настройка маршрута
В Laravel достаточно добавить доменный маршрут для захвата поддоменов.

Важно помнить (согласно официальной документации Laravel): чтобы гарантировать доступность маршрутов поддоменов, следует регистрировать маршруты поддоменов перед регистрацией маршрутов корневого домена. Это предотвратит перезапись маршрутов корневого домена маршрутами поддоменов с одинаковым URI-путем.🚀
1👍1
Десять проверенных методов оптимизации производительности Laravel

🔎Здесь рассматриваются 10 методов оптимизации производительности в Laravel веб-приложениях:

1️⃣Route Caching: Метод кеширования маршрутов, который сокращает время регистрации всех маршрутов приложения, ускоряя обработку запросов.

2️⃣Оптимизация Запросов в Базе Данных: Использование Eloquent ORM с методом ->select() для уменьшения объема данных, которые передаются из базы данных.

3️⃣Eager Loading: Этот метод загрузки связанных данных в одном запросе, что сокращает количество запросов к базе данных и улучшает производительность.

4️⃣Lazy Collections: Интродуцированные в Laravel 6.0, ленивые коллекции позволяют работать с большими объемами данных, минимизируя использование памяти.

5️⃣Планирование Задач и Фоновая Обработка: Использование API для планирования задач и работы с очередями, позволяющее выполнять тяжелые задачи в фоновом режиме.

6️⃣Laravel Mix: Использование Laravel Mix для оптимизации статических ресурсов, таких как изображения, CSS и JavaScript, с автоматической настройкой webpack.

7️⃣Event Broadcasting: Использование Laravel's event broadcasting для обновления клиентской части в реальном времени через веб-сокеты.

8️⃣Пользовательские Правила Валидации: Создание собственных правил валидации для улучшения читаемости кода и надежности приложения.

9️⃣Artisan Commands: Создание собственных Artisan команд для автоматизации рутинных задач и их запуск в фоновом режиме.

🔟Laravel Dusk для Тестирования в Браузере: Использование Laravel Dusk для тестирования взаимодействия с приложением в реальном браузере, что помогает выявить проблемы производительности и улучшить пользовательский опыт.

👨‍💻Все подробности и необходимые ресурсы здесь.
👍61👾1
#дайджест #phpdevjob

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

Full stack Developer в Карбокс
Москва. Мультипродуктовая IT-компания.
Подробнее

Senior PHP Developer в Karma8
Москва. Облачный сервис хранения данных.
Подробнее

Senior PHP разработчик в Ит-Финанс
Москва. Разработка ПО.
Подробнее

Программист PHP в OOMI
Москва. Комплексный маркетинг и WEB разработка.
Подробнее

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

Понравились вакансии?
❤️ — да
🤔 — нет
🤔65🌚2👍1