Библиотека пхпшника | 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
Nginx Unit с Laravel и PHP

Nginx Unit - это веб-сервер, который облегчает прямое взаимодействие с вашим кодом, позволяя передавать HTTP-запросы вашему коду так, чтобы он их понимал. Он поддерживает различные языки программирования и имеет отдельные модули для каждого из них. Чтобы использовать его с PHP, вы можете установить PHP, используя репозиторий ppa:ondrej/php. Важно установить php8.2-dev и php8.2-embed, но без php-fpm.

Установка Nginx Unit выполняется в соответствии с его документацией. Для работы с вашей версией PHP вам нужно вручную пересобрать PHP-модуль для Unit. После установки и настройки Unit позволяет запускать ваше приложение без PHP-FPM, что упрощает его контейнеризацию. Похоже, что он эффективен и устойчив, успешно обрабатывая большие объемы запросов.

Тем не менее, существуют некоторые компромиссы. Изменение версий PHP требует повторной компиляции PHP-модуля Unit, что затрудняет одновременный запуск нескольких версий PHP. Кроме того, возможно потребуется дополнительный HTTP-слой перед Unit для обработки определенных конфигураций, таких как сжатие gzip и защита определенных маршрутов.
5🌚3👍1
Почему отслеживание ошибок имеет решающее значение для вашего приложения

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

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

Это важно, потому что вы хотите знать о своих ошибках как можно скорее, чтобы исправить их и связаться с пользователем до того, как он обратится к вам. Вот почему нужны bug trackers. Они уведомляют вас об ошибках, независимо от того, кто их вызвал, и предоставляют подробные сведения, необходимые для их устранения. Flare - это один из таких bug trackers, предназначенный специально для Laravel.

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

Для начала работы с Flare в проекте Laravel нужно всего лишь выполнить три шага: установить Ignition, клиент Flare; настроить API-ключ; настроить Laravel для отправки ошибок в Flare. После этого вы можете отслеживать ошибки вашего приложения и получать уведомления о них в реальном времени.

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

Таким образом, Flare облегчает отслеживание ошибок в ваших приложениях и позволяет вам быстро реагировать на проблемы, улучшая опыт пользователей и экономя вам время и ресурсы.
👍5🥱5
Как оптимизировать производительность проекта Symfony

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

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

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

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

PHP разработчик в BeGroup
Москва. Маркетплейс нативной рекламы в социальных сетях.
Подробнее

PHP разработчик в Нескучные Финансы
Москва. Компания по аутсорсингу управленческого учета.
Подробнее

Программист в ЧОП Центавр
Москва. Частное охранное предприятие.
Подробнее

PHP full stack разработчик в AgencyxX
Москва. Работе со средними и крупными ecommerce проектами.
Подробнее

Junior PHP-разработчик в Roistat
Москва. Разработка сервиса сквозной аналитики и комплексного управления интернет-маркетингом.
Подробнее

Понравились вакансии?
👍 — да
👎 — нет
🥱53👍2
⚡️Помогите «Библиотеке программиста» начать публиковать сторис

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

Что мы будем публиковать в сторис?
🧠Логические задачки — чтобы тренировать мозги
📰Только важные новости — оперативно
👨‍🏫Истории компаний, инструментов и софта по особым поводам (например, историю Linux в честь его дня создания)
Анонсы наших вебинаров и самых интересных статей

Если вы хотите увидеть наши сторисы в «Библиотеке программиста», вот что нужно сделать:
1️⃣ обновить телеграм на телефоне
2️⃣ перейти по ссылке ➡️ https://t.iss.one/proglibrary?boost
3️⃣ нажать кнопку «голосовать»
🌚3👍2
Понимание сериализации в PHP

Сериализация (или serialization) - это процесс преобразования данных в формат, который можно сохранить или передать. В PHP сериализация выполняется с использованием специального формата, который представляет различные типы данных, такие как булевы значения, null, целые числа, числа с плавающей запятой, строки, массивы и объекты.

Булевы значения сериализуются так:
"b:0;" для false и "b:1;" для true.
Null представляется как "N;".
Целые числа сериализуются как "i:значение;",
числа с плавающей запятой как "d:значение;".
Сериализованные строки содержат информацию о длине строки и выглядят так: "s:[длина]:"[значение]"".

Массивы сериализуются с использованием "a:[количество элементов]:{...элементы}", где каждый элемент представлен в формате "ключ;значение;". Объекты сериализуются с использованием "O:[длина класса]:"[класс]":[количество свойств]:{...свойства}". Сериализация может также обрабатывать защищенные и приватные свойства объектов, добавляя специальные символы к их именам.

Этот процесс позволяет сохранять данные в формате, который можно легко передавать или хранить, и восстанавливать их обратно в их первоначальное состояние.
👍23
Что такое OWASP?

OWASP - это акроним, расшифровывающийся как Open Web Application Security Project.

OWASP - это некоммерческая организация, которая занимается исследованием и обеспечением безопасности веб-приложений. Она обладает обширным контентом, включающим методологии, инструменты, стандарты и руководства по обеспечению безопасности веб-приложений.

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

Знание OWASP и умение применять его рекомендации является важным для php-разработчика, так как помогает защитить веб-приложения от распространенных уязвимостей, таких как инъекции SQL, межсайтовый скриптинг (XSS), утечка конфиденциальной информации и другие.

#вопросы_с_собеседований
👍121
Многочисленные варианты использования оператора многоточия "..." в PHP.

Здесь рассмотрены различные варианты использования оператора многоточия (или оператора "остального") в PHP, который широко используется в различных контекстах:

1️⃣Вариадические функции и методы: Оператор многоточия позволяет определять функции и методы, которые могут принимать переменное количество аргументов.

2️⃣Распаковка массива: Оператор многоточия может распаковывать массив значений и передавать их как аргументы функции или методу

3️⃣Объединение вариативных массивов: Оператор многоточия используется для объединения нескольких массивов в один

4️⃣Первоклассные вызовы: В PHP 8.1 и выше, оператор многоточия позволяет передавать вызываемый объект (например, функцию или метод) как замыкание в другие функции.
👍9
Загрузка ассоциаций по запросу в Symfony

В данной статье рассматривается важный аспект работы с Doctrine в Symfony - загрузка связанных сущностей по запросу. Обычно Doctrine использует отложенную загрузку (Lazy Load), что может вызвать множество запросов к базе данных при доступе к связанным данным.

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

🔎Первое решение: Используется Doctrine с параметром EAGER для жадной загрузки связанных сущностей. Однако это приводит к проблеме лишних JOIN-ов и не позволяет загружать ассоциации по запросу.

🔎Второе решение: Вдохновленное концепцией "with" в Laravel, представлена альтернативная реализация с использованием Symfony pipeline. Загрузка связанных сущностей становится более гибкой и позволяет загружать ассоциации по запросу, обрабатывая их динамически в пайплайне.
👍61🌚1
Сколько лет опыта по вашему должен иметь мидл?
🥱6👍3
EnumConcern

Это пакет, предназначенный для улучшения использования возможностей Enum с помощью набора удобных методов. Этот пакет включает файл Trait, который позволяет легко обрабатывать Enum.
🥱9👍4🌚21
Forwarded from Библиотека программиста | программирование, кодинг, разработка
🔥2🌚1
Новые каналы по PHP🎉

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

Подписывайтесь:
👉Библиотека собеса по PHP — тут мы готовимся к интервью
👉Библиотека задач по PHP — тут решаем задачи, проходим тесты и изучаем код
🥱5👍2
В PHP существуют функции parse_ini_string и parse_ini_file, которые используют встроенный парсер PHP для обработки INI-конфигурационных файлов. Этот парсер поддерживает наследование значений из системных переменных окружения и констант PHP, объявленных на момент парсинга текста. С версии PHP 8.3 добавлена поддержка синтаксиса значений по умолчанию для переменных окружения.

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

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

Подробнее
6
Делаем web сервер из старого Android смартфона, без root

Статья описывает процесс превращения старого Android-устройства (в данном случае Xiaomi Mi 4c) в полноценный веб-сервер с использованием программ Termux, Nginx, PHP-FPM и MariaDB. В ходе статьи автор показывает, как установить необходимые компоненты, настроить их взаимодействие и запустить WordPress на устройстве. Важным моментом является возможность управления сервером через SSH и SFTP, что делает процесс управления и разработки удобным.

вот основные шаги, если захотите повторить:

🟠Установка Termux, эмулятора терминала с минимальным Linux окружением, на Android-устройстве.

🟠Установка и настройка OpenSSH для удаленного доступа к устройству.

🟠Установка и настройка Nginx для обслуживания статических веб-страниц и настройка поддержки PHP-FPM для обработки динамических контентных страниц.

🟠Установка MariaDB для работы с базой данных WordPress.

🟠Запуск и настройка WordPress на Android-устройстве.
👍23😁8
В PHP существует мощный функционал, называемый поздним статическим связыванием (LSB), который позволяет дочерним классам использовать статические свойства и методы родительского класса через ключевое слово "static". Это предоставляет гибкость и динамичность в разработке программного обеспечения.

Здесь рассматривается пример использования позднего статического связывания в веб-приложении с базой данных. В данном примере есть базовый класс "Database", содержащий общие функции для работы с базой данных, и два подкласса "User" и "Product", представляющих объекты в приложении. Позднее статическое связывание позволяет им динамически формировать запросы к базе данных, что делает систему более гибкой и легкой в обслуживании.
🥱12👍7
Какая разница между MyISAM и InnoDB? В каких случаях и что лучше применять?

MyISAM и InnoDB - это два самых распространенных типа таблиц в MySQL. Отличия между ними заключаются в следующем:

1. Система хранения данных: MyISAM использует таблицы с фиксированной длиной строк, в то время как InnoDB использует таблицы с переменной длиной строк. Это означает, что MyISAM обычно быстрее при выполнении операций чтения, а InnoDB более эффективен при выполнении операций записи.

2. Транзакции и целостность данных: InnoDB поддерживает ACID-транзакции (Atomicity, Consistency, Isolation, Durability - Атомарность, Согласованность, Изолированность, Устойчивость). Это означает, что в случае сбоя данных, InnoDB может откатить все изменения, сохраняя целостность данных. MyISAM не поддерживает транзакции и не обеспечивает такую же уровень целостности данных.

3. Блокировка таблиц: MyISAM блокирует всю таблицу во время выполнения операции записи, в то время как InnoDB блокирует только строки, с которыми происходит операция. Это означает, что InnoDB обычно более подходит для многопользовательских приложений, где множество операций происходит одновременно.

4. Внешние ключи: InnoDB поддерживает внешние ключи (foreign keys), что облегчает поддержку связей между таблицами и обеспечивает целостность данных. MyISAM не поддерживает внешние ключи.

Итак, в каких случаях что лучше использовать:

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

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

#вопросы_с_собеседований
👍18🥱8
Шаблоны проектирования PHP: Active Record

Active Record - это шаблон проектирования, который включает в себя класс с методами сохранения данных и бизнес-логики. Однако он нарушает принцип единственной ответственности, так как класс сочетает в себе множество обязанностей. Для решения этой проблемы предлагается создать родительский класс, который реализует методы сохранения данных универсальным способом.
✔️Этот подход называется Layer Supertype.

🔎Приведен пример работы с Active Record. В данном примере создается класс Product, который содержит методы для работы с продуктами в базе данных SQLite. Класс имеет статическое свойство conn для хранения соединения с базой данных и переменную data для хранения данных продукта.

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

Приведенный код также включает примеры тестирования методов:
🟠INSERT
🟠UPDATE
🟠выборка всех продуктов из базы данных.
🥱7👍5