Библиотека пхпшника | 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
Построение гибкой, но абстрактной структуры внешней интеграции

В статье описан процесс разработки интеграции Jira в приложение Flare, которое уже имело интеграцию с GitHub. Основное внимание уделяется созданию гибкой и абстрактной структуры, позволяющей легко добавлять новые интеграции в будущем и приводится три примера абстрагирования кода для различных интеграций.
👍6👾2
8 способов, с помощью которых Laravel поможет вам писать чистый и лаконичный код

В статье рассматриваются восемь методов, которые позволяют писать более компактный и чистый код в Laravel:

1️⃣Фасады (Facades):

Фасады предоставляют «статический» интерфейс к классам, доступным в контейнере служб приложения.
Позволяют обращаться к функционалу Laravel через интуитивно понятный синтаксис, например, Cache::get('foo').

2️⃣Неявное связывание (Implicit Binding):

Позволяет автоматически получать ресурсы из базы данных, указывая модель вместо явного запроса.
Пример: Route::get('/blog/{post}', [PostController::class, 'show']), где $post — это экземпляр модели Post.

3️⃣Автоматическое внедрение зависимостей:

Laravel может автоматически внедрять зависимости, например, объект запроса.
Просто указываем в методе контроллера store(Request $request), и Laravel предоставляет экземпляр запроса.

4️⃣Перенаправление маршрутов (Redirect Routes):

Использование метода Route::redirect('/old', '/new') для перенаправления существующих URL без создания целого контроллера.

5️⃣Просмотр маршрутов (View Routes):

Использование метода Route::view('/about', 'pages.about') для простой регистрации маршрута, возвращающего представление.

6️⃣Коллекции (Collections):

Laravel Collections предоставляют множество полезных методов для работы с массивами более эффективным и последовательным образом.

7️⃣Условный трейт (Conditional Trait):

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

8️⃣Бесконечные пакеты первой стороны (Endless First Party Packages):

Использование обширной коллекции официальных и сторонних пакетов Laravel для решения распространенных задач.
9😁6🥱1
#дайджест #phpdevjob

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

Senior PHP разработчик в Торговая компания
Москва. Высоконагруженный маркетплейс.
Подробнее

Программист в Университет искусственного интеллекта
Москва. Образование в сфере AI.
Подробнее

Senior PHP-разработчик в EdgeQ
Москва. Web & Mobile разработка полного цикла.
Подробнее

PHP-разработчик в ЛАБИРИНТ
Москва. Книжный холдинг.
Подробнее

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

Понравились вакансии?
❤️ — да
🤔 — нет
🤔63
Какое самое лучшее решение вы когда-либо принимали в отношении своей работы/рабочего процесса?⬇️
🥱102👍1
Последнее слово об «unfinalize»

Автор создал запрос на объединение в PHP-CS-Fixer, чтобы предотвратить установку stevebauman/unfinalize вместе с friendsofphp/php-cs-fixer. Это вызвало оживленные обсуждения в сообществе PHP относительно использования ключевого слова «final» в коде. Запрос на объединение был воспринят как полушутка, направленная на предотвращение интеграции инструмента unfinalize с PHP-CS-Fixer.

Драма разгорелась, когда запрос на объединение был принят, и unfinalize был заблокирован в PHP-CS-Fixer. Автор столкнулся с критикой и дизлайками со стороны сообщества, что привело к отмене запроса на объединение. Он аргументировал, что модификация вендорного кода не является стандартом кодирования, и высказал опасения относительно потенциального вреда от разрешения запрещенного наследования.

В статье обсуждаются причины запроса на объединение, включая убеждение в том, что «final by default» — хороший подход, и что unfinalize может быть вредным для пользователей. Автор также рассматривает контраргументы, такие как существование Composer patches и dg/bypass-finals.
👍10
This media is not supported in the widget
VIEW IN TELEGRAM
🥱18👍8🌚32👏2
Что такое type hinting, как работает, зачем нужен?

Type hinting в PHP — это возможность указывать ожидаемые или допустимые типы данных для параметров функций и функций-обратного вызова (callback). Он используется для определения типов аргументов функций и возвращаемых значений.

Type hinting выполняется при помощи объявления типа данных перед именем параметра функции или функции-обратного вызова.

В данном случае мы указываем, что параметры $a и $b должны быть целочисленного типа (int), а функция должна возвращать тоже целочисленное значение. Если будет передан несоответствующий тип данных, то PHP выдаст ошибку.

Type hinting в PHP имеет следующие преимущества и цели:

1. Увеличение надежности и безопасности кода: Type hinting позволяет контролировать типы данных, которые принимаются и возвращаются функциями, что может помочь предотвратить ошибки типизации и некорректное использование функций.

2. Улучшение понимания кода: Type hinting делает код более читаемым и понятным, особенно при работе в команде. Видя ожидаемые типы данных в объявлениях функций, другие разработчики легко могут понять, какие данные ожидаются для правильного использования функции.

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

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

#вопросы_с_собеседований
🥱8👍5
Kubernates и Laravel: Начало работы

Статья предоставляет введение в Kubernetes, охватывая основные концепции и объясняя ключевые компоненты, такие как узлы, кластеры, пулы узлов, поды, наборы реплик, деплойменты, сервисы, ингрессы и пространства имен. Затем описывается конфигурация Pod, ReplicaSet и Deployment в Kubernetes, с акцентом на механизмы меток и селекторов.

Автор также рассматривает создание кластера Kubernetes с использованием DigitalOcean и командной строки kubectl. Управляемые базы данных представляются в качестве решения для обработки состояний в приложениях внутри кластера Kubernetes.

Далее в статье идет речь о развертывании Laravel API в Kubernetes, охватываются темы, такие как ConfigMaps и Secrets для управления переменными окружения. Приводятся подробные шаги по созданию и применению конфигураций деплоймента, а также проверке статуса подов и просмотру журналов.

Затем объясняется развертывание nginx в Kubernetes вместе с настройкой коммуникации между nginx и Laravel API с использованием сервисов типа ClusterIP. Демонстрируется использование команд kubectl для взаимодействия с кластером и тестирования конфигураций.
👍7
Из чего состоят карьерные сайты: топ-5 фич и 4 месяца разработки

Здесь рассказывается о растущем спросе на IT-специалистов в России за последние два года и о том, как многие компании начали активно создавать карьерные сайты для эффективного подбора персонала.

Автор описывает свой опыт работы над карьерными сайтами для крупных компаний с активным IT-подбором.
Как часто вы ездите в офис? Сколько раз в неделю?⬇️
🌚13👍2🥱2🤔1
Новые сообщения об ошибках в PHP 8.3

Предстоящая версия PHP 8.3 вводит 38 новых сообщений об ошибках, удаляя при этом 11. Количество уникальных сообщений об ошибках составляет 783, что ставит PHP 8.3 на четвёртое место, обогнав PHP 8.2, но всё ещё уступая PHP 7.4. Сообщения об ошибках обычно накапливаются в пределах основной версии PHP до следующей версии с изменениями, где они удаляются.

Некоторые из новых интересных сообщений об ошибках в PHP 8.3 включают:

1️⃣Устаревшее использование get_class() и get_parent_class() без аргументов. Теперь аргументы обязательны, и рекомендуется использовать $this внутри класса.
2️⃣Ошибка при использовании неподходящего значения для типизированной константы класса.
3️⃣Ограничение возможных типов для констант класса, исключая такие типы, как never, void и callable.
4️⃣Запрет некоторых модификаторов для элементов класса, таких как abstract, static, public, final и т. д.
5️⃣Устаревшее увеличение неалфавитных строк с рекомендацией использовать специализированные функции, такие как str_increment().
6️⃣Введение конкретных сообщений об ошибках для операций декремента с пустыми строками, нечисловыми строками, булевыми и null-типами.
7️⃣Предупреждение о попытке операций инкремента или декремента для булевых значений.
8️⃣Ошибка линтинга для дублирования объявлений статических переменных в замыканиях.
👍102
Forwarded from Библиотека программиста | программирование, кодинг, разработка
Подборка лучших статей «Библиотеки программиста» за октябрь: сохраняй в заметки, чтобы не пропустить #самыйсок

📊 Эффективная работа с JSON в Go
🔝 Лучшие практики Go: путь к чистому коду
📚 ТОП-8 книг по DevOps в 2023 году
💪 6 сервисов для подготовки к техническим собеседованиям
🗺️ Карьерная карта: что это, как ее составить и почему она обязательно нужна разработчику
🛡️ 8 способов защиты от манипуляций на работе
👩‍💻 Женщины в ИТ: проблемы и преимущества сложной профессии
🤖 8 лучших бесплатных курсов по ИИ и глубокому обучению
👨‍💻 9 трендов в найме айтишников в 2023 году
🤔 9 мифов об IT и найме айтишников
🤖 25 бесплатных AI-инструментов для разработчиков
☁️ ТОП-10 бессерверных фреймворков
🚩 Итог одной валютной удаленки: проработал месяц бесплатно и ушел с долгами
💻 20 лучших ноутбуков для программиста в 2023 году
🧠 Как научиться критически мыслить: 6 эффективных способов
Результаты ежегодного опроса разработчиков StackOverflow: 20+ главных инсайтов 2023 года
1🔥1🥱1
🔎Эта статья рассматривает использование Symfony Messenger вместе с Redis для мониторинга и отслеживания событий, происходящих во время обработки сообщений.

🔑Целью является создание ключей в Redis, которые подсчитывают количество событий различных видов мессенджера как для общего мониторинга, так и для конкретных сообщений. Рассматриваются события, связанные с приемом, обработкой, ошибками и повторными попытками обработки сообщений.

⚙️Настройка включает установку Symfony Messenger и Redis, конфигурацию сервера Redis с использованием Docker и настройку бандла Redis. Используются два типа ключей: общие ключи для общего мониторинга и ключи сообщений для конкретного мониторинга. В статье предоставляется пошаговая инструкция по настройке Redis и созданию необходимых ключей.

🔄Затем представлен сервис MessengerHandler, который взаимодействует с Redis с использованием конвейеров для эффективной обработки хитов для различных ключей. Два перечисления, MessengerEvents и MessengerTimeEvents, используются для категоризации событий и временных интервалов.

👂Далее создается класс MessengerSubscriber, который прослушивает различные события мессенджера и использует сервис MessengerHandler для обновления ключей Redis соответственно.

Для демонстрации функционала в статье создается простое сообщение и его обработчик, настраивается Redis-транспорт Symfony Messenger и отправляется сообщение. В конце статьи объясняется, как проверить сгенерированные ключи Redis, чтобы убедиться, что мониторинг работает правильно.
👍8🥱1
Управление сессиями Laravel в кластерах Kubernetes

В то время как Kubernetes предоставляет преимущества, такие как горизонтальное масштабирование без сохранения состояния, фоновая обработка и гибкость хранения, он вводит сложности для управления сессиями.

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

1️⃣Клиентские сессии (Session Affinity): Это включает в себя настройку Kubernetes для обеспечения того, чтобы запросы от конкретного клиента постоянно направлялись к одному и тому же поду. Это можно достичь через сессионную аффинность на основе IP или куки. В то время как это может решить некоторые проблемы, это может привести к неравномерному распределению трафика и потенциальным нарушениям, если под, обрабатывающий клиентскую сессию, сталкивается с проблемами.

2️⃣Распределенное хранилище сессий с Redis: В статье предлагается использовать Redis в качестве распределенного хранилища сессий для обмена данными сессии между несколькими экземплярами приложения Laravel. Redis выбран из-за своей производительности, масштабируемости, устойчивости и поддержки различных структур данных. Предоставлены шаги по настройке Redis в качестве драйвера сессии в Laravel, включая установку необходимого пакета, обновление конфигурационных файлов и развертывание Redis в Kubernetes с использованием Helm.

Реализуя либо клиентские сессии, либо распределенное хранилище сессий с Redis, разработчики Laravel могут преодолеть проблемы, внесенные Kubernetes, обеспечивая согласованное управление сессиями и опыт пользователя в масштабируемых средах.
3👍3
Что означает утверждение о том, что СУБД поддерживает контроль ссылочной целостности связей?

Утверждение о том, что СУБД поддерживает контроль ссылочной целостности связей означает, что СУБД автоматически обеспечивает целостность данных, связанных между таблицами. Она регулирует и проверяет соответствие значений внешнего ключа (foreign key) со значениями первичного ключа (primary key) родительской таблицы.

#вопросы_с_собеседований
👍15🥱9