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

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

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

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

РКН: https://gosuslugi.ru/snet/67a5d13cd6fa92100ee6f68b
Download Telegram
Использование SQLite в качестве векторного хранилища в PHP

В статье рассказывается о том, как использовать SQLite в качестве векторного хранилища данных в PHP. Векторное хранилище является эффективным способом организации и хранения таких данных, как векторы, матрицы и другие пространственные структуры.


Также автор рассматривает преимущества использования SQLite векторным хранилищем, такие как простота установки и настройки, высокая производительность, возможность работы с большими объемами данных, а также гибкость и расширяемость.
4
Видео: Match в PHP 8.0

PHP 8 представил нам новое выражение — match — очень сильный функционал, который зачастую будет отличной альтернативой оператору switch.

Это небольшое видео с демонстрацией работы этого выражения.
🥱12🔥7👍21
Кто стоит за PHP

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

Она также объясняет, как любой человек, включая новых разработчиков, может предложить новые функции для PHP через процесс RFC (Request for Comments). Процесс включает в себя отправку идеи на внутренний список рассылки, подготовку официального документа RFC, обсуждение и создание голосования на протяжении двух недель.

Далее объясняется понятие "Karma", которое определяет уровень доступа для отправки RFC и голосования. Затем описывается, кто имеет право голосовать по RFC, включая PHP Core Contributors и представителей PHP-сообщества.

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

В статье также рассматривается, как стать PHP Core Contributor и финансирование разработки PHP. Она объясняет, что не существует фирмы, стоящей за PHP, и что разработчики обычно не получают оплату за свои вклады, но некоторые компании и организации оплачивают работу разработчиков.
👍18🥱2
Центральный процессор в многоядерных процессорах извлекает и выполняет инструкции из памяти, и операционная система управляет этим процессом. Контекстное переключение необходимо для многозадачности, но может замедлять систему, если переключений слишком много.

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

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

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

Автор предлагает полиглотную архитектуру, объединяющую PHP для быстрого развития и Go для эффективного использования ресурсов, чтобы решить проблемы с затратами на инфраструктуру. Описывается архитектура, использующая балансировку нагрузки между бэкендами PHP и Go для оптимизации использования ресурсов.
👍102
Уменьшаем количество багов в коде расширяя возможности статического PHP анализатора Psalm

В этой статье автор рассказывает о том, как он расширил функциональность статического анализатора Psalm для PHP под свои нужды. Его основной проблемой было то, что анализаторы не могли правильно определить классы, описанные в типах, что приводило к потенциальным ошибкам при рефакторинге.
5
Почему префикс обратной косой черты улучшает производительность вызова функций PHP

Разработчики PHP часто используют обратную косую черту (\) перед вызовами функций, и здесь объясняется, почему это может быть полезно для производительности приложения.

В PHP, пространства имен (namespaces) используются для организации элементов, таких как классы и функции, внутри приложения. Для доступа к элементам в определенном пространстве имен, начинают с корневого пространства имен и добавляют все родительские пространства имен, разделяя их. Например, \App\Model\User().

Добавление обратной косой черты перед вызовом функции указывает интерпретатору искать функцию в корневом пространстве имен, что может ускорить поиск, так как большинство встроенных функций находятся там.
👍132😁2
#дайджест #phpdevjob

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

PHP-разработчик в KUBER
Москва. Сервис по автоматизации доставки контейнеров на авто.
Подробнее

PHP-разработчик в R-брокер
Москва. Контекстная реклама.
Подробнее

PHP (Laravel) разработчик в Kvando
Москва. Разработка, тестирование и поддержка ИТ-продуктов.
Подробнее

PHP-программист в Рубль.ру
Москва. Технологическая компания.
Подробнее

Web-разработчик в Ed.Partners
Москва. Диджитал-студия.
Подробнее

Понравились вакансии?
👍 — да
👎 — нет
🥱13👍61
Какой был учебный проект, который вы показывали на первом собеседовании?⬇️⬇️⬇️
👍1
Аутентификация любого провайдера OAuth с помощью Laravel Socialite

Эта статья объясняет, как создать универсальный контроллер с использованием Socialite в Laravel для упрощения процесса входа через различные социальные сети, такие как Google или GitHub.
👍6
Перечислите известные вам типы данных.

Хотя PHP это динамический язык, все же все данные в нем имеют четкие типы.
Скалярные типы:
✔️ bool
✔️ int
✔️ float (иногда встречается название double, что для php не имеет разницы)
✔️ string
Смешанные типы:
✔️ array
✔️ object
✔️ callable
✔️ iterable
Специальные типы:
✔️ resource
✔️ null

Подробнее о типах и псевдо-типах в документации.

#вопросы_с_собеседований
🥱10👍81
Технология передачи данных в секретный контур

Статья описывает работу секретного контура, который представляет собой компьютер, отделенный от сети через однонаправленное устройство передачи данных (диод). Этот компьютер используется для передачи секретных данных, обеспечивая высокий уровень безопасности и контроля над данными. Секретный контур предоставляет механизм для передачи данных с одной стороны на другую, при этом строго контролируется доступ к данным и обеспечивается их целостность.
👍3😁2🤔2
TokensValidation: безопасная аутентификация и авторизация для веб-приложений

Здесь представлена библиотека под названием TokensValidation, которая разработана для улучшения безопасности процессов аутентификации и авторизации в веб-приложениях. Библиотека предоставляет гибкие функции для создания и проверки токенов аутентификации и подтверждения, а также обладает следующими ключевыми особенностями.
1👍1
Видео: Принципы SOLID в Laravel и PHP: Практическое руководство

Если вам нужна ясность в том, как сделать ваши PHP-приложения более удобными в обслуживании, масштабируемыми и надежными, то это руководство для вас.

Это видео охватывает:

- Принцип единой ответственности (SRP): Сосредоточенность на ваших контроллерах и моделях Laravel.
- Принцип "Открыто/закрыто" (OCP): Расширение возможностей, не затрагивая старый код.
- Принцип подстановки Лисковой (LSP): Обеспечение взаимозаменяемости объектов в PHP для менее уязвимого кода
- Принцип разделения интерфейсов (ISP): Разработка экономичных, целенаправленных интерфейсов для ваших приложений Laravel.
🥱92
Туториал по NativePHP: Создание приложения MenuBar для Mac

Статья начинается с инструкции по установке NativePHP в новом приложении Laravel. Затем описывается создание простого приложения Mac MenuBar, которое показывает местное время каждого члена команды. Процесс установки и запуска NativePHP подробно расписан.

Далее предоставляет код и инструкции по созданию приложения, включая установку необходимых пакетов, создание модели и представлений, настройку маршрутов и обработку операций Create и Update.
🥱6👍52
Еще один #дайджест новостей по PHP за неделю:

🔎PHP 8.1.23 выпущен — Команда разработчиков PHP объявляет о немедленной доступности PHP 8.1.23. Это дебаг-релиз. Всем пользователям PHP 8.1 рекомендуется выполнить обновление до этой версии.

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

🔎Неделя Symfony #870 (28 августа — 3 сентября 2023 г.)
👍21
Использование AWS S3 для хранилища Laravel

Статья рассматривает использование Amazon Web Services (AWS) S3 для хранения данных в приложениях, разработанных на фреймворке Laravel.
👍53
Автоматическая регистрация пользовательских типов Doctrine в Symfony

Здесь раскрываются следующие темы:

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

Проблема с Doctrine: Обсуждается проблема, связанная с тем, что Doctrine, используемая для управления уровнем персистентности, не знает, как обрабатывать пользовательские типы объектов-значений.

Создание пользовательских типов Doctrine: Показано, как создавать собственные типы Doctrine, которые позволяют преобразовывать объекты-значения в формат базы данных и наоборот.
5👍4👾2
Быстрые запросы к базе данных не всегда лучше

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

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

Затем автор переходит к обсуждению быстрых запросов. Он задает вопросы: почему быстрые запросы считаются хорошими, и в каком контексте это важно? Автор утверждает, что быстрые запросы важны, потому что они свидетельствуют о быстрой работе приложения, но он также подчеркивает, что он не рассматривает запросы изолированно, а в контексте их взаимодействия внутри веб-приложений.

Он объясняет, что для измерения производительности необходимо учитывать совокупное время выполнения запроса, а не только отдельных запросов. Он предоставляет пример, в котором множество быстрых запросов в сумме замедляют HTTP-запрос, и подчеркивает, что для оптимизации приложения важно смотреть на совокупное время запроса.

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

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

Этот новый метод позволяет обнаруживать случаи, когда множество быстрых запросов в сумме замедляют выполнение HTTP-запросов. Автор подчеркивает, что это не заменяет журнал медленных запросов к базе данных, но представляет дополнительный инструмент для изучения и оптимизации производительности приложений.
7👍6