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

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

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

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

РКН: https://gosuslugi.ru/snet/67a5d13cd6fa92100ee6f68b
Download Telegram
♾️ Решайте проблемы правильным способом: Использование инфраструктуры вместо быстрых решений

При импорте 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
🧩 Упакуйте свой код правильно

В предыдущей статье «Как организовать структуру приложения» рассматривались различные подходы к организации кода, включая монолитную архитектуру, многослойную архитектуру и принципы чистой архитектуры. Особое внимание уделялось важности понятной структуры кода, способствующей упрощению его понимания, внедрению новых функций и снижению вероятности ошибок. Были рассмотрены критерии понятности, такие как чёткое назначение файлов и папок, разделение логики по модулям или функциональным зонам, использование самодокументируемых названий и соблюдение стандартов кодирования. Также поднимались проблемы, возникающие при неструктурированной организации кода, включая сложность навигации, отсутствие модульности и нарушение принципов SOLID и GRASP.

👉Читать полностью
Forwarded from Библиотека программиста | программирование, кодинг, разработка
📊 Как себя чувствует IT-рынок в 2025 году?

Друзья, запускаем важное исследование рынка труда в IT!

Нам очень важно понять:
• Как изменились зарплаты
• Что происходит с наймом
• Есть ли сокращения или рост

🔐 Опрос полностью анонимный
⏱️ Займёт всего 3-5 минут
📈 Результаты опубликуем в подробной статье

Ваши ответы помогут составить реальную картину происходящего в индустрии.

👉 Пройти опрос
🧑‍💻 Статьи для IT: как объяснять и распространять значимые идеи

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

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

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

👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
This media is not supported in your browser
VIEW IN TELEGRAM
🛠️ navi — утилита для командной строки

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

➡️ Как использовать

1️⃣ Устанавливаем через Homebrew:
brew install navi

2️⃣ Запускаем командой:
navi — доступ ко всем шпаргалкам

3️⃣ Встраиваем как shell-виджет или tmux-виджет для быстрого доступа

4️⃣ Создаем свои шпаргалки или импортируем из других источников (например, tldr или cheat.sh)

🌻 Что еще умеет

▪️ Поддерживает кастомные конфиги, цвета и пути для шпаргалок

▪️ Работает в любом терминале или через Tmux

▪️ Можно использовать как скриптовый инструмент или даже через Alfred

🔗 Репозиторий
👍41
Автотесты | Как мокировать классы с помощью PHPUnit

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

👉Читать статью
👍31
⬆️ Используйте состояния фабрик

Знаете ли вы, что фабрики Laravel позволяют определять состояния? Вы можете использовать несколько состояний для описания объекта и применять к нему различные модификации. Это также делает код более читабельным 🚀

#совет
👍81🔥1🌚1
PVM — менеджер версий PHP

Простой bash-скрипт для управления несколькими версиями PHP в Unix-системах(в том числе MacOS).

Установка через Curl:
curl -o /usr/local/bin/pvm https://raw.githubusercontent.com/smoqadam/pvm/main/pvm
chmod +x /usr/local/bin/pvm
export PATH="$HOME/.pvm/current:$PATH"

🔗Github

#инструменты
👍29😁41
Как использовать кэширование в Laravel?

Кэширование в Laravel — это мощная функция, которая может значительно улучшить производительность вашего веб-приложения за счет хранения часто используемых данных в кэше.

1. Конфигурация: Сначала убедитесь, что ваше приложение Laravel правильно настроено для кэширования. Файл конфигурации находится в config/cache.php, где вы можете указать драйвер кэша по умолчанию и другие параметры. Laravel поддерживает различные драйверы кэша, такие как file, database, redis, memcached и другие.

2. Хранение данных в кэше: Вы можете хранить данные в кэше, используя фасад Cache или вспомогательную функцию cache(). Например, чтобы сохранить значение в кэше на 10 минут, вы можете использовать:

Cache::put('key', 'value', 600);

3. Извлечение данных из кэша: Чтобы получить данные из кэша, вы можете использовать метод get:

$value = Cache::get('key');

// или используя вспомогательную функцию
$value = cache('key');

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

Cache::has('key');

5. Удаление данных из кэша: Чтобы удалить данные из кэша, используйте метод forget:

Cache::forget('key');

6. Очистка всего кэша: Если вам нужно очистить весь кэш, вы можете использовать метод flush:

Cache::flush();

#вопросы_с_собеседований
👍8
RFC: Поддержка замыканий в константных выражениях

В PHP 8.5 появится возможность использовать замыкания в:

🔸В параметрах атрибутов,
🔸В значениях по умолчанию свойств и параметров.
🔸В константах и константах классов.

👉Читать на сайте PHP
🤔11🤩10👾2
🐋 История создания идеального Docker для Laravel

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

💻 Хабр
👍8
Знакомство с новыми стартовыми наборами Laravel

Laravel 12 представил три новых стартовых набора для React, Vue и Livewire. Каждый из них также доступен в варианте с WorkOS AuthKit. Эти наборы обеспечивают удобное начало работы как с кодом, так и с пользовательским интерфейсом.

💬 Официальный сайт
👍41