Библиотека пхпшника | 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
Forwarded from Библиотека программиста | программирование, кодинг, разработка
🤔 А вы говорите, что PHP умирает, PHP не востребован...

💬 Как вам вакансия на сеньора с вилкой 1-1,2 🍋 ?

#холивар
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥21💯1
Что такое индексы? Как они влияют на время выполнения SELECT, INSERT?

Индексы в базах данных — это структуры данных, создаваемые для ускорения поиска и доступа к данным. Их основная цель — улучшить производительность запросов к базе данных, таких как SELECT, INSERT, UPDATE и DELETE, путем уменьшения количества записей, которые необходимо обработать для выполнения запроса.

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

Влияние индексов на время выполнения различных операций запросов:

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

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

Общее правило состоит в том, что индексы улучшают производительность операций чтения данных (SELECT), но могут негативно сказываться на производительности операций записи данных (INSERT, UPDATE, DELETE). Поэтому при проектировании базы данных необходимо балансировать использование индексов в зависимости от требований к производительности операций чтения и записи.

#вопросы_с_собеседований
8👍1
Laravel facades vs class aliases

Здесь рассматриваются различия между фасадами (Facades) и псевдонимами классов (Class Aliases) в Laravel, а также объясняется, как они стали восприниматься сообществом Laravel как взаимосвязанные концепции.

Фасады в Laravel представляют собой прокси-объекты для объектов, хранящихся в контейнере служб (Service Container). Если объект привязан к контейнеру служб под именем 'my-service', вы можете вызывать его методы, используя статические методы фасада.

При вызове статического метода на этом фасаде вызывается магический метод __callStatic(), извлекается служба 'my-service' из контейнера, и вызов перенаправляется к этому экземпляру.

Псевдонимы классов позволяют разработчикам создавать альтернативные имена для классов с помощью функции class_alias. Например:

class_alias(MyClass::class, 'BonzuPippinpaddleopsicopolisTheThird');

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

Основное недопонимание заключается в том, что Laravel по умолчанию создает псевдонимы для всех своих фасадов, делая их доступными как будто они находятся в глобальном пространстве имен. Это привело к тому, что многие в сообществе Laravel перепутали фасады с псевдонимами классов.
👍32🔥1
«Как мы разрабатывали сервис расчета стоимости доставки для ритейлера»

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

Здесь рассказывается о том, как был разработан и внедрён сервис расчёта стоимости доставки.
👍31
Гайд по мягкому удалению в Laravel

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

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

🛠️ Чтобы реализовать мягкие удаления в Laravel, вы используете трейт SoftDeletes в вашей модели и добавляете столбец deleted_at в таблицу базы данных. Модели мягких удалений могут быть восстановлены или окончательно удалены с использованием предоставленных методов.

🧪 Тестирование софт-удалений включает в себя проверку правильности софт-удаления, восстановления или окончательного удаления моделей, а также проверку запросов на исключение или включение софт-удаленных моделей в зависимости от задуманного. Необходимо быть осторожным с использованием фасада DB, чтобы избежать случайного запроса софт-удаленных данных.
4👍2🔥2😁1
#дайджест новостей по PHP за неделю:

🔎Выпущены PHP 8.2.18, PHP 8.3.6 & PHP 8.1.28 — Команда разработчиков PHP объявляет о немедленной доступности PHP 8.2.18, PHP 8.3.6 и PHP 8.1.28. Это релиз безопасности.

🔎Команда Laravel выпустила v11.4 — с новым фасадом исключений, поддержкой Enum в методе Collection::mapinto() и многое другое.

🔎Basset — альтернативный способ загрузки ассетов CSS & JS

🔎Неделя Symfony #902 (8-14 апреля 2024 г.)
👍3🔥21
Глубокое погружение в оптимальные настройки PHP-FPM

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

Раздел по устранению неполадок советует проверять журналы PHP-FPM на предупреждения о настройке max_children, которая определяет максимальное количество дочерних процессов, которые PHP-FPM может породить. Также выделяется важность контроля за потреблением памяти, который можно отслеживать с помощью команд, таких как htop или free -hl.

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

Проведение тестирования различных вариантов менеджера процессов рекомендуется с использованием ApacheBench, с результатами, показывающими неожиданные различия в производительности между статическим, динамическим и по требованию настройками. Кроме того, в статье обсуждаются дополнительные параметры, такие как slowlog для отслеживания медленных запросов и параметры аварийного перезапуска для обработки отказов процессов.
👍12
Настраиваем Windows WSL для локальной разработки Laravel

В этой небольшой статье рассказывается, как правильно настроить WSL в Windows 11 для локальной разработки Laravel-приложения. Мы собираемся установить php, mysql, nginx и composer, а также отредактировать файл hosts в самом Windows.
10👍5🥱5
Какая система типов используется в PHP? Опишите плюсы и минусы.

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

Плюсы:

✔️Гибкость: Динамическая типизация делает PHP очень гибким языком программирования, позволяя быстро писать и изменять код.

✔️Простота использования: Не нужно явно объявлять типы переменных, что упрощает написание кода, особенно для новичков.

✔️Легкость внесения изменений: Поскольку типы переменных могут быть изменены в любой момент, изменение структуры данных или логики программы может быть более легким и менее разрушительным.

✔️Меньше кода: Нет необходимости явно приводить типы или выполнять проверки на соответствие типов, что может сократить объем кода.

Минусы:

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

Уменьшение производительности: Проверка типов во время выполнения может негативно сказаться на производительности приложения, особенно в больших и сложных проектах.

Меньшая надежность: Поскольку типы переменных могут изменяться во время выполнения, это может привести к неожиданному поведению программы и усложнить ее понимание и поддержку.

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

#вопросы_с_собеседований
10
В Symfony инструкции не всегда достаточны, но Symfony имеет интеграцию с Doctrine ORM, что круто! 🎉

🛠️ Проблема:
Как выполнить запросы к БД на основе данных формы?

📋 Решение:
Предлагается использовать объект типа DTO (DataTransferObject), созданный на основе данных формы, чтобы передавать структурированные данные в методы запросов. Это делает код более надежным и предсказуемым.💼

Далее показывается пример создания формы и обработки данных из неё в контроллере Symfony. Автор использует созданный объект DTO для передачи данных в метод запроса репозитория.

Затем переходим к рассмотрению метода findByFilter в репозитории событий (EventRepository). Этот метод выполняет запрос к базе данных на основе данных из формы, применяя различные фильтры в зависимости от выбранных пользователем параметров. Автор обсуждает компактность и эффективность этого метода, а также его возможность повторного использования благодаря отделению от остального кода.🛠️

🔧 Преимущества:
Код становится более читаемым и надежным 📖
Запросы становятся короткими, эффективными и переиспользуемыми 💪
Можно выполнять стандартные проверки кода на SQL-запросах 👨‍💻

Короткие, эффективные и переиспользуемые запросы к БД — круто! 🚀
🥱7👍32
Почему FilamentPHP — это хорошее решение для создания CMS

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

Конечно, в этом случае можно взять готовое решение вроде Bitrix. Однако порой эти огромные комбайны оказываются действительно слишком уж огромными, и для управления тремя с половиной табличками проще написать свое решение.
🥱133
🧑‍💻 Статьи для IT: как объяснять и распространять значимые идеи

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

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

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

👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
2
4 сайта с бесплатными шаблонами для Laravel

HTMLrev: Огромная коллекция бесплатных HTML-шаблонов, в том числе множество для панелей управления Laravel. Часто обновляются и позволяют легко просматривать по категориям.

Creative Tim: Известный своими готовыми к использованию шаблонами, Creative Tim предоставляет UI-киты, административные панели и системы дизайна для нескольких архитектур, включая Laravel. Их шаблоны поставляются с высококачественным кодом и документацией.

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

JustBoil: JustBoil специализируется на шаблонах панелей управления для различных библиотек, включая Bulma и Tailwind. Их бесплатные шаблоны профессионально разработаны, написаны и документированы, предлагая множество компонентов для создания панелей управления.
🔥102👍2🌚21