💻 Подборка новостей по PHP за неделю:
🔎 Релиз-кандидат CakePHP 5.2.0-RC1
В этой версии представлены улучшения, такие как команда cake counter_cache для регенерации счетчиков моделей с использованием
🔎 Релиз Laravel MongoDB 5.2
Команда MongoDB выпустила версию 5.2.0 интеграции MongoDB для Laravel. Это обновление включает поддержку Laravel 12, интеграцию с Laravel Scout и возможности векторного поиска.
🔎 Временная область контекста в Laravel 12.1
Команда Laravel выпустила версию 12.1.0 — первое минорное обновление Laravel 12, которое включает метод context scope, метод
🔎 Неделя Symfony #949 (3–9 марта 2025 года)
Библиотека пхпшника #свежак
🔎 Релиз-кандидат CakePHP 5.2.0-RC1
В этой версии представлены улучшения, такие как команда cake counter_cache для регенерации счетчиков моделей с использованием
CounterCacheBehavior
, метод ConsoleIntegrationTestTrait::debugOutput()
для упрощения отладки интеграционных тестов консольных команд и поддержка опции separator для консольных аргументов и опций, что позволяет определять параметры, например, как --names=foo,bar
🔎 Релиз Laravel MongoDB 5.2
Команда MongoDB выпустила версию 5.2.0 интеграции MongoDB для Laravel. Это обновление включает поддержку Laravel 12, интеграцию с Laravel Scout и возможности векторного поиска.
🔎 Временная область контекста в Laravel 12.1
Команда Laravel выпустила версию 12.1.0 — первое минорное обновление Laravel 12, которое включает метод context scope, метод
Arr::partition()
, метод getRawSql()
для экземпляров исключений запросов и другие улучшения.🔎 Неделя Symfony #949 (3–9 марта 2025 года)
Библиотека пхпшника #свежак
🥰1
🔹 PHP разбор: что использовать и когда? 🔹
Сегодня сравним
✅ isset($var) — Проверяет, существует ли переменная и не равна ли она null.
🔹 isset($var) →
🔹 isset($var) → true, если $var = «», 0,
✅ empty($var) — Проверяет, считается ли переменная «пустой» (falsey значением).
🔹 empty($var) →
🔹 empty($var) → false, если
✅ is_null($var) — Проверяет, является ли переменная строго
🔹 is_null($var) →
🔹 is_null($var) →
📌 Когда что использовать?
🔹 isset($var) → Проверяем, существует ли переменная.
🔹 empty($var) → Проверяем, «пустая» ли она (falsey).
🔹 is_null($var) → Проверяем, является ли
✍️ А какую функцию вы чаще используете в своих проектах?
Библиотека пхпшника #буст
Сегодня сравним
isset()
vs empty()
vs is_null()
— функции для проверки переменных в PHP. Когда какую применять? 🤔✅ isset($var) — Проверяет, существует ли переменная и не равна ли она null.
🔹 isset($var) →
false
, если $var = null;
или переменная не объявлена.🔹 isset($var) → true, если $var = «», 0,
false
, [], но НЕ null
.✅ empty($var) — Проверяет, считается ли переменная «пустой» (falsey значением).
🔹 empty($var) →
true
, если $var = «»
, 0, false
, null
, [], «0».🔹 empty($var) → false, если
$var = «abc»
, 123, [1,2,3].✅ is_null($var) — Проверяет, является ли переменная строго
null
.🔹 is_null($var) →
true
, только если $var = null
.🔹 is_null($var) →
false
, если $var существует и имеет любое другое значение (даже «», 0, false).📌 Когда что использовать?
🔹 isset($var) → Проверяем, существует ли переменная.
🔹 empty($var) → Проверяем, «пустая» ли она (falsey).
🔹 is_null($var) → Проверяем, является ли
null
.✍️ А какую функцию вы чаще используете в своих проектах?
Библиотека пхпшника #буст
👍16🥱2
🐘 Глубокое погружение в экосистему PHP
Статья представляет собой подробный анализ качества кода в экосистеме PHP. Автор загрузил 236 ГБ Git-репозиториев, содержащих 2,3 миллиарда строк кода, и проанализировал 11,1 миллиона PHP-файлов, чтобы получить представление о состоянии экосистемы.
Основные заключения статьи:
🔸Модульность и лаконичность: 36% файлов содержат менее 100 строк кода, что свидетельствует о предпочтении небольших и сфокусированных реализаций. Широкое использование интерфейсов (3,7 млн интерфейсов против 7,4 млн классов) способствует высокой модульности экосистемы.
🔸Сложность кода: 76,5% файлов имеют низкую цикломатическую сложность (0-10), однако 23,5% кода обладают высокой сложностью, что может затруднять поддержку.
🔸Зависимость от небольшого числа пакетов: Всего 136 пакетов (0,05% от общего числа) составляют более половины всех загрузок в экосистеме. Хотя эти ключевые библиотеки хорошо поддерживаются, такая концентрация создает риски, связанные с зависимостью.
🔸«Теневая инфраструктура»: Некоторые широко используемые пакеты имеют низкую популярность (мало звезд на GitHub), что указывает на то, что критически важные зависимости могут поддерживаться очень небольшими командами.
🔸Состояние экосистемы: Хотя экосистема PHP в целом здорова, 70% пакетов показывают минимальную активность, а 23% кажутся заброшенными, что делает аудит зависимостей необходимым.
👉 Читать статью
Библиотека пхпшника
Статья представляет собой подробный анализ качества кода в экосистеме PHP. Автор загрузил 236 ГБ Git-репозиториев, содержащих 2,3 миллиарда строк кода, и проанализировал 11,1 миллиона PHP-файлов, чтобы получить представление о состоянии экосистемы.
Основные заключения статьи:
🔸Модульность и лаконичность: 36% файлов содержат менее 100 строк кода, что свидетельствует о предпочтении небольших и сфокусированных реализаций. Широкое использование интерфейсов (3,7 млн интерфейсов против 7,4 млн классов) способствует высокой модульности экосистемы.
🔸Сложность кода: 76,5% файлов имеют низкую цикломатическую сложность (0-10), однако 23,5% кода обладают высокой сложностью, что может затруднять поддержку.
🔸Зависимость от небольшого числа пакетов: Всего 136 пакетов (0,05% от общего числа) составляют более половины всех загрузок в экосистеме. Хотя эти ключевые библиотеки хорошо поддерживаются, такая концентрация создает риски, связанные с зависимостью.
🔸«Теневая инфраструктура»: Некоторые широко используемые пакеты имеют низкую популярность (мало звезд на GitHub), что указывает на то, что критически важные зависимости могут поддерживаться очень небольшими командами.
🔸Состояние экосистемы: Хотя экосистема PHP в целом здорова, 70% пакетов показывают минимальную активность, а 23% кажутся заброшенными, что делает аудит зависимостей необходимым.
👉 Читать статью
Библиотека пхпшника
🔥8👍3
Media is too big
VIEW IN TELEGRAM
Proglib рассказывает базу в формате рилса
Please open Telegram to view this post
VIEW IN TELEGRAM
😁13🥱7
PHP Superglobals: Использование, безопасность и лучшие практики современной разработки
PHP Superglobals — это встроенные глобальные массивы, которые позволяют получать доступ к данным сервера, параметрам запроса, информации о сессиях и другим данным. Они появились в версии PHP 4.1.0, заменив устаревший и небезопасный механизм register_globals, что сделало управление переменными более предсказуемым и улучшило безопасность.
Использование Superglobals в PHP 8
В актуальных версиях PHP эти массивы остаются важным инструментом, но при работе с ними необходимо учитывать риски, такие как XSS-атаки, SQL-инъекции и угон сессий.
Основные Superglobals и их назначение:
$_GET — получение параметров из URL.
$_POST — обработка данных формы, отправленных методом POST.
$_SESSION — хранение переменных сессии.
$_COOKIE — работа с cookie-файлами.
$_SERVER — доступ к метаданным сервера (например, $_SERVER['HTTP_USER_AGENT']).
$_FILES — загрузка файлов.
$_REQUEST — объединяет данные из $_GET, $_POST и $_COOKIE (не рекомендуется к использованию).
🔗 Medium
PHP Superglobals — это встроенные глобальные массивы, которые позволяют получать доступ к данным сервера, параметрам запроса, информации о сессиях и другим данным. Они появились в версии PHP 4.1.0, заменив устаревший и небезопасный механизм register_globals, что сделало управление переменными более предсказуемым и улучшило безопасность.
Использование Superglobals в PHP 8
В актуальных версиях PHP эти массивы остаются важным инструментом, но при работе с ними необходимо учитывать риски, такие как XSS-атаки, SQL-инъекции и угон сессий.
Основные Superglobals и их назначение:
$_GET — получение параметров из URL.
$_POST — обработка данных формы, отправленных методом POST.
$_SESSION — хранение переменных сессии.
$_COOKIE — работа с cookie-файлами.
$_SERVER — доступ к метаданным сервера (например, $_SERVER['HTTP_USER_AGENT']).
$_FILES — загрузка файлов.
$_REQUEST — объединяет данные из $_GET, $_POST и $_COOKIE (не рекомендуется к использованию).
🔗 Medium
👍7🌚3
ℹ️ Laravel: упрощённое мокирование HTTP-запросов в тестах
Как это работает
Laravel предоставляет фасад Http, который позволяет элегантно и просто мокировать HTTP-запросы в тестах, снижая объем кода и повышая читаемость.
Основные возможности
Строковые ответы:
Массивы (конвертируются в JSON):
Коды статусов:
Преимущества использования
🔸Снижение объёма кода: упрощённый синтаксис делает тесты более компактными.
🔸Улучшенная читаемость: тесты становятся более понятными и поддерживаемыми.
🔸Гибкость: возможность задавать различные типы ответов для разных URL с поддержкой подстановочных знаков.
Где применять
🔹Тестирование интеграций с внешними API.
🔹Мокирование ответов сервисов для проверки обработки различных сценариев.
🔹Снижение зависимости от внешних сервисов при выполнении тестов.
💬 Читать статью
Как это работает
Laravel предоставляет фасад Http, который позволяет элегантно и просто мокировать HTTP-запросы в тестах, снижая объем кода и повышая читаемость.
Основные возможности
Http::fake()
поддерживает различные типы ответов:Строковые ответы:
'example.com' => 'Ответ'
Массивы (конвертируются в JSON):
'api.site.com/*' => ['ключ' => 'значение']
Коды статусов:
'service.com' => 204
Преимущества использования
🔸Снижение объёма кода: упрощённый синтаксис делает тесты более компактными.
🔸Улучшенная читаемость: тесты становятся более понятными и поддерживаемыми.
🔸Гибкость: возможность задавать различные типы ответов для разных URL с поддержкой подстановочных знаков.
Где применять
🔹Тестирование интеграций с внешними API.
🔹Мокирование ответов сервисов для проверки обработки различных сценариев.
🔹Снижение зависимости от внешних сервисов при выполнении тестов.
💬 Читать статью
❤1🤩1👾1
В нашем чате работает бот Shieldy — он защищает от спама, запрашивая у новых участников решение простой капчи.
⚠️ Проблема, с которой сталкиваются многие: вы нажимаете под постом «Прокомментировать», пишете что-то, а потом получаете бан и не можете писать комментарии.
❓Почему так: Shieldy отправляет капчу в сам чат, а не в комментарии под конкретный пост. Из-за этого капчу можно не увидеть, не отправить ответ на нее, и бот автоматически заблокирует вас.
— Зайдите в описание канала с телефона и нажмите кнопку Discuss / Чат
— Нажмите Join / Присоединиться
— Сразу обратите внимание на сообщение от бота Shieldy
— Решите простой пример и отправьте ответ в чат
После этого бот отправит приветственное сообщение и вы сможете оставлять комментарии. Эту проверку нужно пройти только один раз при вступлении в чат.
❗️ Если вас все-таки забанили
— Это временная блокировка на несколько минут
— Подождите и попробуйте зайти позже, бот снова отправит вам капчу
Админы канала никак не могут ускорить процесс, бот автоматически снимает с вас блокировку через пару минут. Мы понимаем, что эта система неидеальна, и ищем более удобное решение.
👾 Спасибо, что активно участвуете в обсуждении наших постов!
Please open Telegram to view this post
VIEW IN TELEGRAM
😢3😁2❤1🥱1
🐧 Пингвин, покоривший мир: история взлета Linux – ОС, управляющей 96% серверов
В 1991 году на компьютере с 4 мегабайтами памяти родилась программа, которая сегодня управляет большей частью интернета, смартфонами и даже космическими аппаратами. Это история Linux, рассказанная одним из первых свидетелей.
➡️ Читать статью
➡️ Зеркало
В 1991 году на компьютере с 4 мегабайтами памяти родилась программа, которая сегодня управляет большей частью интернета, смартфонами и даже космическими аппаратами. Это история Linux, рассказанная одним из первых свидетелей.
➡️ Читать статью
➡️ Зеркало
👍5
Промт для автоматического документирования PHP-кода с использованием PHPDoc
Если вы хотите, чтобы ваш PHP-код был всегда с отличной документацией, вот пример промта для автоматического создания PHPDoc-блоков:
«
»
🔹 Рекомендации по использованию:
🌟 Стандарты оформления: Соблюдайте стандарты PSR-12 для единого оформления и удобочитаемости кода.
🔧 Автоматизация: Используйте инструменты для автоматической генерации документации, такие как phpDocumentor. Это сэкономит вам массу времени и сил.
📅 Поддержание актуальности: Регулярно обновляйте документацию, чтобы она всегда отражала текущий контекст. Это упростит поддержку проекта в долгосрочной перспективе, если такая цель конечно имеется😜
Библиотека пхпшника #буст
Если вы хотите, чтобы ваш PHP-код был всегда с отличной документацией, вот пример промта для автоматического создания PHPDoc-блоков:
«
Проанализируй следующий PHP-код и сгенерируй соответствующие PHPDoc-блоки для всех классов, методов и свойств. Убедись, что используются правильные теги, такие как @param, @return, @throws, и добавь описания для каждого элемента:
\\Ваш код
»
🔹 Рекомендации по использованию:
🌟 Стандарты оформления: Соблюдайте стандарты PSR-12 для единого оформления и удобочитаемости кода.
🔧 Автоматизация: Используйте инструменты для автоматической генерации документации, такие как phpDocumentor. Это сэкономит вам массу времени и сил.
📅 Поддержание актуальности: Регулярно обновляйте документацию, чтобы она всегда отражала текущий контекст. Это упростит поддержку проекта в долгосрочной перспективе, если такая цель конечно имеется😜
Библиотека пхпшника #буст
👍5
php-tokio — Используйте любую асинхронную библиотеку Rust в PHP
Эта библиотека позволяет вам использовать любую асинхронную библиотеку Rust внутри PHP в асинхронном режиме.
Она полностью интегрирована с revolt: это обеспечивает полную совместимость с amphp , PSL и responsephp.
🔗 Github
#инструменты
Эта библиотека позволяет вам использовать любую асинхронную библиотеку Rust внутри PHP в асинхронном режиме.
Она полностью интегрирована с revolt: это обеспечивает полную совместимость с amphp , PSL и responsephp.
🔗 Github
#инструменты
🔥15
Продолжаем рассказывать про полезные фишки шторма для начинающих. Вот подборка наиболее полезных сочетаний для редактирования:
🔸 Ctrl + D: дублирование текущей строки или выделенного блока.
🔸 Ctrl + Y: удаление строки под курсором.
🔸 Ctrl + Shift + J: объединение выделенных строк в одну, что упрощает форматирование массивов и HTML-тегов.
🔸 Ctrl + Alt + L: переформатирование кода в соответствии с настройками оформления.
Библиотека пхпшника #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11
Обеспечение надежности JSON из LLM-ответов в PHP
Эта статья рассказывает о библиотеке LLM-JSON-Cleaner, которая помогает разработчикам работать с JSON-ответами от больших языковых моделей (LLM). Если вы когда-нибудь взаимодействовали с LLM API, то наверняка сталкивались с ситуацией, когда вместо чистого JSON приходят ответы, содержащие дополнительный текст — приветствия, комментарии, пояснения. Даже если четко задать модели формат, она все равно может выдать неидеальный JSON.
Вот тут и пригодится LLM-JSON-Cleaner. Она решает две основные задачи: извлекает JSON из ответов LLM, удаляя весь ненужный текст, и проверяет, соответствует ли этот JSON заданной схеме.
Установить ее очень просто — достаточно выполнить команду
👉 Читать статью
Эта статья рассказывает о библиотеке LLM-JSON-Cleaner, которая помогает разработчикам работать с JSON-ответами от больших языковых моделей (LLM). Если вы когда-нибудь взаимодействовали с LLM API, то наверняка сталкивались с ситуацией, когда вместо чистого JSON приходят ответы, содержащие дополнительный текст — приветствия, комментарии, пояснения. Даже если четко задать модели формат, она все равно может выдать неидеальный JSON.
Вот тут и пригодится LLM-JSON-Cleaner. Она решает две основные задачи: извлекает JSON из ответов LLM, удаляя весь ненужный текст, и проверяет, соответствует ли этот JSON заданной схеме.
Установить ее очень просто — достаточно выполнить команду
composer require edgaras/llm-json-cleaner
. После этого можно сразу начинать использовать.👉 Читать статью
🌚5
🔥 Ребус: проверяем вашу смекалку
Сможете угадать без гугла?
Ответ пишите в комментах 👇
Библиотека пхпшника #междусобойчик
Сможете угадать без гугла?
Ответ пишите в комментах 👇
Библиотека пхпшника #междусобойчик
👾1
🔎 Laravel 12.2: Введение пользовательских стартовых наборов
Команда Laravel выпустила версию 12.2.0, включающую метод
🔎 Релизы PHP 8.2.28 и PHP 8.1.32
Команда разработчиков PHP объявила о немедленной доступности версий PHP 8.2.28 и PHP 8.1.32. Эти обновления являются релизами безопасности, и всем пользователям рекомендуется обновиться до этих версий.
🔎 Неделя Symfony #950 (10–16 марта 2025 года)
На этой неделе в предстоящей версии Symfony 7.3 обновлены ленивые сервисы для использования нативных ленивых объектов PHP и добавлена возможность определения глобальных параметров перевода. В существующих версиях Symfony исправлена поддержка хуков PHP 8.4 и асимметричной видимости в
Команда Laravel выпустила версию 12.2.0, включающую метод
ddBody()
для тестирования ответов, поддержку одиночной модели через HasManyThrough
, контекстные ключи для методов increment
и decrement
, а также возможность создания пользовательских стартовых наборов для React, Vue и Livewire. 🔎 Релизы PHP 8.2.28 и PHP 8.1.32
Команда разработчиков PHP объявила о немедленной доступности версий PHP 8.2.28 и PHP 8.1.32. Эти обновления являются релизами безопасности, и всем пользователям рекомендуется обновиться до этих версий.
🔎 Неделя Symfony #950 (10–16 марта 2025 года)
На этой неделе в предстоящей версии Symfony 7.3 обновлены ленивые сервисы для использования нативных ленивых объектов PHP и добавлена возможность определения глобальных параметров перевода. В существующих версиях Symfony исправлена поддержка хуков PHP 8.4 и асимметричной видимости в
VarExporter
.👍4
Почему php -r «echo (int) ((0.1+0.7)*10);» выводит 7, а не 8?
В PHP выражение php -r «echo (int) ((0.1 + 0.7) * 10);» выводит 7 вместо ожидаемого 8 из-за особенностей представления чисел с плавающей точкой в компьютерах. Числа, такие как 0.1 и 0.7, не могут быть точно представлены в двоичной системе, что приводит к небольшим погрешностям при вычислениях. В данном случае, результат выражения (0.1 + 0.7) * 10 может быть немного меньше 8, например, 7.999999999999999, и при приведении к целому типу ((int)) дробная часть отбрасывается, давая результат 7.
Рекомендуемые подходы для получения ожидаемого результата:
Округление перед приведением к целому числу:
Используйте функцию round() для округления значения до ближайшего целого перед приведением к типу int:
Форматирование с заданной точностью:
Примените функцию sprintf() для форматирования числа с определённой точностью перед приведением:
Использование математических функций произвольной точности:
Для повышения точности вычислений можно использовать функции из расширения bcmath:
В PHP выражение php -r «echo (int) ((0.1 + 0.7) * 10);» выводит 7 вместо ожидаемого 8 из-за особенностей представления чисел с плавающей точкой в компьютерах. Числа, такие как 0.1 и 0.7, не могут быть точно представлены в двоичной системе, что приводит к небольшим погрешностям при вычислениях. В данном случае, результат выражения (0.1 + 0.7) * 10 может быть немного меньше 8, например, 7.999999999999999, и при приведении к целому типу ((int)) дробная часть отбрасывается, давая результат 7.
Рекомендуемые подходы для получения ожидаемого результата:
Округление перед приведением к целому числу:
Используйте функцию round() для округления значения до ближайшего целого перед приведением к типу int:
echo (int) round((0.1 + 0.7) * 10); // выводит 8
Форматирование с заданной точностью:
Примените функцию sprintf() для форматирования числа с определённой точностью перед приведением:
echo (int) sprintf('%.0f', (0.1 + 0.7) * 10); // выводит 8
Использование математических функций произвольной точности:
Для повышения точности вычислений можно использовать функции из расширения bcmath:
echo bcmul(bcadd('0.1', '0.7', 1), '10', 0); // выводит 8
👍1
#хочу_спросить
Задавайте любые вопросы о программировании и получайте ответы от пользователей. В комментариях под постом укажите #язык, #стек и/или #библиотеку, по которым задаете вопрос.
Задавайте любые вопросы о программировании и получайте ответы от пользователей. В комментариях под постом укажите #язык, #стек и/или #библиотеку, по которым задаете вопрос.
👍3
💻 Внедряем формулы как в Эксель
Пользователи постоянно меняют логику подсчёта? Они не довольны скоростью с которой вы меняете код? Уже надоело так часто менять одно и тоже? Если да, то получайте решение: пускай пользователи сами пишут формулы на языке, который им более знаком: это формулы эксель. От вас потребуется лишь надо научить своё приложение считать это. Как это сделать? С помощью чёрной магии конечно!
🔗 Хабр
Пользователи постоянно меняют логику подсчёта? Они не довольны скоростью с которой вы меняете код? Уже надоело так часто менять одно и тоже? Если да, то получайте решение: пускай пользователи сами пишут формулы на языке, который им более знаком: это формулы эксель. От вас потребуется лишь надо научить своё приложение считать это. Как это сделать? С помощью чёрной магии конечно!
🔗 Хабр
❤1🔥1🌚1👾1
✅ Проверка того, является ли пользователь гостем в Laravel
Нам часто нужно проверить, прошел ли пользователь аутентификацию, и для этого мы используем метод «
Библиотека пхпшника #буст
Нам часто нужно проверить, прошел ли пользователь аутентификацию, и для этого мы используем метод «
check
». Но знаете ли вы, что когда вам нужно проверить, является ли пользователь гостем, вы можете использовать метод «guest
»? 🚀Библиотека пхпшника #буст
👍9❤2👾1