Telegram Web
🚀 Laravel 12 — новые возможности и улучшения

Laravel 12 выходит уже совсем скоро! Официальная дата релиза — 24 февраля 2025 года, и он получит много новых мощных функций и улучшений.

В Laravel 12 появятся такие важные функции, как:
Улучшенная структура приложения — более упорядоченная и интуитивно понятная.
Усовершенствованный конструктор запросов — новая функция nestedWhere() для сложных запросов.
Улучшения в области безопасности — Более надежная проверка паролей с помощью функции secureValidate().
Улучшенная разработка API — Родной GraphQL и улучшенная версионность API.
Отладка с помощью искусственного интеллекта — решение проблем в реальном времени с помощью функции debug()->suggest().
Производительность и масштабируемость — Асинхронное кэширование и улучшенное использование PHP.
Функции реального времени — Поддержка WebSocket для уведомлений и чатов в реальном времени.
Удобные инструменты для разработчиков — Более продуманный CLI и улучшенные команды Artisan.

📢 Смотрите полный обзор здесь: 👉 Видео о новых возможностях Laravel 12
🔥21🤔8🥰1😁1
Общение с умными устройствами силами PHP

Каждый день мы сталкиваемся с более новыми и умными устройствами, управляемыми через интернет или Wi-Fi. Концепция IoT (Internet of Things) объединяет физические устройства в одну сеть для передачи данных и управления ими. И, оказывается, что интернет вещей — никакое не ограничение! Управлять устройствами в сети можно с помощью легковесного протокола MQTT.


🔗Хабр
1👍1
📚 Читаете ли вы техническую литературу, чтобы прокачать свои навыки?

❤️ — да, постоянно читаю
👍 — иногда читаю
👾 — почти не обращаюсь к книгам, получаю знания из других источников

👇 Посоветуйте в комментариях книги, которые показались вам наиболее полезными

#интерактив
👍7342👾40
💾 Новый тренажёр по SQL

Разработчик создал SQL Noir — интерактивную детективную игру, где расследования ведутся с помощью SQL-запросов.

Погружаешься в сюжет и решаешь загадки с реальными SQL-запросами.

🔗 Ссылка
👍26😁8🔥42
Вакансии «Библиотеки программиста» — ждем вас в команде!

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

Подробности тут

Мы предлагаем частичную занятость и полностью удаленный формат работы — можно совмещать с основной и находиться в любом месте🌴

Ждем ваших откликов 👾
Как Geocodio поддерживает в актуальном состоянии 300 миллионов адресов

Geocodio поддерживает актуальность более 300 миллионов адресов с помощью собственной системы обработки данных Chop Chop.

Как обновляются адресные данные
Адреса постоянно меняются: появляются новые дома, улицы, пересматриваются границы участков. Чтобы поддерживать базу в актуальном состоянии, Geocodio использует почти 3 000 источников данных и автоматизированный конвейер обработки.

Система Chop Chop
Chop Chop — внутренняя платформа компании, построенная на Laravel и SQLite. Она управляет поступающими данными, очищает, нормализует и проверяет их. Благодаря системе очередей в Laravel Horizon данные из сотен источников обрабатываются параллельно на мощных серверах.

В системе есть визуальный редактор, позволяющий корректировать данные вручную. Для массовых исправлений используются SQL-запросы.

Этапы обработки данных
1. Получение данных — большинство источников (городские и окружные администрации) обновляются еженедельно.
2. Конвертация форматов — сырые данные приводятся к единому виду (GeoJSON).
3. Обогащение — добавляются недостающие почтовые коды, города, корректируются адресные записи.
4. Валидация — проверяются корректность номеров домов, координат и других параметров. Если качество данных низкое, они отбрасываются (до 30% записей).
5. Проверка изменений — если в новой версии есть значительные отличия, их передают на ручную проверку.

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

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

👉Читать подробнее
👍9🥱3
🟢 Пропуск заданий при отмене пакетной обработки в Laravel

При работе с пакетными заданиями лучше всего проверять, не отменена ли пакетная обработка перед запуском задания, и вам не придется делать это вручную, потому что промежуточное ПО SkipIfBatchCancelled сделает это за вас 🚀

#совет
👍6👾3
📚 Psl — Современный, централизованный, хорошо типизированный, неблокируемый набор API

Библиотека представляет собой современную, согласованную, централизованную и строго типизированную стандартную библиотеку для PHP. Ее цель — предоставить разработчикам PHP набор неблокирующих API, которые упрощают и стандартизируют выполнение общих задач, таких как работа со строками, массивами, генерация случайных чисел и другие операции.

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

🔗Github

#инструменты
👍61
⚔️ Поздравляем защитников PHP-кода:

▪️ .env — шифровальщик главного штаба, хранит секретные данные (пока их случайно не сольют в репозиторий)

▪️ PHPUnit — разведчик-диверсант, проникает в самое сердце кода и находит баги до того, как их найдет заказчик

▪️ PDO — сапер, обезвреживающий SQL-инъекции

А какой защитник помогает вам выживать в мире PHP? Признавайтесь в комментах 👇

🎖 Отдельный орден тем, кто пережил PHP 4.
👍26🥱6🌚5🤔3
Что такое абстрактный класс и чем он отличается от интерфейса?

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

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

Основные отличия между абстрактным классом и интерфейсом в PHP:

1. Абстрактный класс может иметь переменные и реализацию методов, в то время как интерфейс не может.
2. Класс может наследовать только один абстрактный класс, но имплементировать несколько интерфейсов.
3. Класс, наследующий абстрактный класс, может переопределить его методы или добавить новые методы с реализацией. В случае интерфейса, класс должен реализовать все методы из интерфейса без изменений.
4. Абстрактный класс может содержать поля и методы с любым модификатором доступа, в то время как интерфейс может содержать только публичные методы.

#вопросы_с_собеседований
👍8🔥2
♾️ Решайте проблемы правильным способом: Использование инфраструктуры вместо быстрых решений

При импорте CSV-файлов в базу данных возникла проблема с обработкой дат. Для работы с датами использовалась стандартная библиотека Carbon, однако в некоторых случаях парсер вел себя неожиданно. Если дата была указана в формате месяц/день (например, 11/11), Laravel автоматически добавлял текущий год, превращая запись в 2025-11-11. Ожидаемое поведение отличалось — дата без года должна оставаться в исходном виде.

Поиск решения

Сначала были рассмотрены стандартные подходы, включая использование регулярных выражений для проверки формата даты (YYYY-MM-DD, MM/DD/YYYY и другие). Однако такой метод оказался сложным в реализации, поскольку поддержка всех возможных форматов потребовала бы значительных усилий.

Далее было изучено, как сам Laravel выполняет валидацию дат. Оказалось, что он использует две встроенные функции PHP:

date_parse() — анализирует строку и возвращает массив с разобранными данными (год, месяц, день).

checkdate() — проверяет корректность даты.
Финальное решение

Было принято решение заменить Carbon::parse() на комбинацию date_parse() и checkdate(), чтобы обработка дат стала более точной.

Этот случай демонстрирует, что прежде чем разрабатывать сложные решения, стоит изучить, какие методы уже предлагает сам Laravel и PHP. Такой подход экономит время, упрощает поддержку кода и делает его более надежным.

💬Читать подробнее
🥱9👍1😢1
Переход на Symfony в заскорузлом Yii2 монолите: подробный разбор

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

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

👉Хабр
🤔4👍2
🕵️ Использование хелперов даты в конструкторе запросов Laravel

В Laravel версии 11.42 были добавлены новые методы построителя запросов(Query Builder), позволяющие работать с относительными датами. Эти методы повышают читаемость и упрощают написание условий, связанных с датами, в ваших моделях.

Ранее, для фильтрации записей по дате, приходилось явно указывать операторы сравнения и использовать функции, такие как now(). Это могло приводить к менее читаемому и более громоздкому коду.

Новые методы, такие как whereNowOrPast, whereFuture, whereAfterToday, orWhereBeforeToday и другие, позволяют писать более лаконичный и понятный код для работы с датами. Они инкапсулируют логику сравнения дат, делая код более выразительным и легким для понимания.

👉Официальный сайт
👍5
👉 Интенсив «Архитектуры и шаблоны проектирования» для middle и senior-разработчиков

Проверьте свои знания, ответив на 8 вопросов – https://proglib.io/w/5027bc1e

🧐 Кому подойдет?
Разработчикам, которые знают любой объектно-ориентированный язык программирования и хотят углубиться в архитектурные паттерны.

🎮 Как проходит обучение?
В течение всего интенсива вы будете создавать игру «Звездные войны» и применять ключевые архитектурные паттерны. В процессе изучите:
– Как строить гибкую архитектуру, которая не замедляет разработку
– Как применять IoC-контейнеры и писать модульные тесты
– Как использовать SOLID за пределами ООП
– Как внедрять CI/CD и снижать технический долг

👉 Подробная программа обучения

А по промокоду MIDDLE до 28 февраля вы получите дополнительную скидку на обучение
Please open Telegram to view this post
VIEW IN TELEGRAM
#хочу_спросить

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

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

Фишки:

🔸Анализ и подсветка: выявление проблем в коде с помощью настраиваемых правил и плагинов.

🔸Автоматические исправления: Применяйте исправления к проблемам, связанным с линтингом, для поддержания чистоты кодовой базы.

🔸Последовательное форматирование: Стандартизируйте стиль кода с помощью мощных инструментов форматирования.

🔸Семантические проверки: Убедитесь в корректности кода с помощью надежного семантического анализа.

🔸Визуализация AST: Изучите структуру кода с помощью разбора абстрактного синтаксического дерева (AST).


Установка через curl в одну строку: curl --proto '=https' --tlsv1.2 -sSf https://carthage.software/mago.sh | bash

💻 Github

#интсрументы
👍31
Какие модификаторы видимости есть в РНР?

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

protected — свойства или методы доступны только внутри класса, а также в дочерних классах.

private — доступ к private свойствам и методам имеет только класс, в котором эти свойства или методы объявлены.

Если модификатор доступа не указан явно, то он будет считаться как public.
👍7🥱7
Запуск Laravel Reverb в фоновом режиме с помощью systemd

В этой статье показано, как настроить и запустить сервер Reverb WebSocket в фоновом режиме с помощью systemd. Такой подход гарантирует, что ваш WebSocket-сервер запускается вместе с системой и автоматически перезапускается в случае сбоя.

🔗Читать статью
👍5
2025/07/14 21:43:42
Back to Top
HTML Embed Code: