🔥 Как избежать проблем с
Сегодня разберём две часто используемые функции в PHP —
📌
Функция
❗ Пример подвоха:
Если переменной вообще нет в коде — тоже будет
📌
Функция
❗ Пустыми считаются:
-
-
-
-
-
-
Пример:
⚠️ Ошибка: проверка
🔥 Лучший подход?
Используйте строгие проверки:
Если проверяете массивы, то:
Вывод: не злоупотребляйте
isset() и empty() в PHP? Сегодня разберём две часто используемые функции в PHP —
isset() и empty(), которые могут вести себя не так, как вы ожидаете. 📌
isset() Функция
isset($var) проверяет, была ли переменная установлена и не равна ли она null. ❗ Пример подвоха:
$var = null;
var_dump(isset($var)); // false
Если переменной вообще нет в коде — тоже будет
false. 📌
empty() Функция
empty($var) проверяет, считается ли переменная "пустой". ❗ Пустыми считаются:
-
"" (пустая строка)-
0 (число)-
"0" (строка с нулём)-
null-
false-
[] (пустой массив)Пример:
$var = "0";
var_dump(empty($var)); // true, хотя строка не null
⚠️ Ошибка: проверка
if (!isset($var) || empty($var)) может привести к неожиданному результату. 🔥 Лучший подход?
Используйте строгие проверки:
if ($var === null) { /* Переменная null */ }
if ($var === '') { /* Пустая строка */ }
if ($var === 0) { /* Число 0 */ }
Если проверяете массивы, то:
if (count($var) === 0) { /* Массив пуст */ }
Вывод: не злоупотребляйте
isset() и empty(), а проверяйте переменные строго!❤6👍6👎4🔥1🥰1
🔥 Хочешь быстрее расти в IT? Хватит учиться в одиночку
В IT прокачивается тот, кто каждый день видит сильные идеи, новые инструменты, реальные задачи, вакансии и разборы.
Окружение решает больше, чем кажется.
Собрал папки и каналы, где можно быстрее влиться в нужное направление, следить за трендами и не вариться в своём пузыре.
AI: t.iss.one/ai_machinelearning_big_data
Python: t.iss.one/pythonl
Linux: t.iss.one/linuxacademiya
Хакинг: t.iss.one/linuxkalii
DevOps: t.iss.one/DevOPSitsec
Docker: t.iss.one/DevopsDocker
Golang: t.iss.one/Golang_google
Rust: t.iss.one/rust_code
C++: t.iss.one/cpluspluc
C#: t.iss.one/csharp_1001_notes
Java: t.iss.one/java_library
JavaScript: t.iss.one/javascriptv
React: t.iss.one/react_tg
Frontend: t.iss.one/front
PHP: t.iss.one/phpshka
Android: t.iss.one/android_its
Мобильная разработка: t.iss.one/mobdevelop
Базы данных: t.iss.one/sqlhub
Data Science: t.iss.one/data_analysis_ml
Big Data: t.iss.one/bigdatai
Математика: t.iss.one/data_math
Физика: t.iss.one/fizmat
Kubernetes: t.iss.one/kubernetc
GameDev: https://t.iss.one/gamedev
Haskell: t.iss.one/haskell_tg
Собеседования и карьера:
DS собеседования: t.iss.one/machinelearning_interview
Python собеседования: t.iss.one/python_job_interview
Папка с вакансиями: t.iss.one/addlist/_zyy_jQ_QUsyM2Vi
Папка Go разработчика: t.iss.one/addlist/MUtJEeJSxeY2YTFi
Папка Python разработчика: t.iss.one/addlist/eEPya-HF6mkxMGIy
Папка ML: https://t.iss.one/addlist/2Ls-snqEeytkMDgy
Папка Frontend: https://t.iss.one/addlist/mzMMG3RPZhY2M2Iy
Полезное сверху:
ИТ-мемы: t.iss.one/memes_prog
Английский для программистов: t.iss.one/english_forprogrammers
ИИ и технологии: t.iss.one/vistehno
954 ГБ open-source курсов: @courses
ИТ-книги бесплатно: https://t.iss.one/addlist/BkskQciUW_FhNjEy
Max Ai: https://max.ru/ai_machinelearning_big_data
Max python: https://max.ru/pythonl
ТЕХНО: https://max.ru/vistehno
Max Go: https://max.ru/Golang_google
Max Linux: https://max.ru/linuxkalii
Devops: https://max.ru/DevOPSitsec
C#: https://max.ru/csharp_ci
C++: https://max.ru/cpluspluc
SQL: https://max.ru/sqlhub
Java: https://max.ru/javatg
Подписывайся на нужные направления и собирай себе ленту, которая реально двигает вперёд.
Пока кто-то листает шум, ты будешь видеть инструменты, задачи и идеи, которые помогают расти в профессии.
В IT прокачивается тот, кто каждый день видит сильные идеи, новые инструменты, реальные задачи, вакансии и разборы.
Окружение решает больше, чем кажется.
Собрал папки и каналы, где можно быстрее влиться в нужное направление, следить за трендами и не вариться в своём пузыре.
AI: t.iss.one/ai_machinelearning_big_data
Python: t.iss.one/pythonl
Linux: t.iss.one/linuxacademiya
Хакинг: t.iss.one/linuxkalii
DevOps: t.iss.one/DevOPSitsec
Docker: t.iss.one/DevopsDocker
Golang: t.iss.one/Golang_google
Rust: t.iss.one/rust_code
C++: t.iss.one/cpluspluc
C#: t.iss.one/csharp_1001_notes
Java: t.iss.one/java_library
JavaScript: t.iss.one/javascriptv
React: t.iss.one/react_tg
Frontend: t.iss.one/front
PHP: t.iss.one/phpshka
Android: t.iss.one/android_its
Мобильная разработка: t.iss.one/mobdevelop
Базы данных: t.iss.one/sqlhub
Data Science: t.iss.one/data_analysis_ml
Big Data: t.iss.one/bigdatai
Математика: t.iss.one/data_math
Физика: t.iss.one/fizmat
Kubernetes: t.iss.one/kubernetc
GameDev: https://t.iss.one/gamedev
Haskell: t.iss.one/haskell_tg
Собеседования и карьера:
DS собеседования: t.iss.one/machinelearning_interview
Python собеседования: t.iss.one/python_job_interview
Папка с вакансиями: t.iss.one/addlist/_zyy_jQ_QUsyM2Vi
Папка Go разработчика: t.iss.one/addlist/MUtJEeJSxeY2YTFi
Папка Python разработчика: t.iss.one/addlist/eEPya-HF6mkxMGIy
Папка ML: https://t.iss.one/addlist/2Ls-snqEeytkMDgy
Папка Frontend: https://t.iss.one/addlist/mzMMG3RPZhY2M2Iy
Полезное сверху:
ИТ-мемы: t.iss.one/memes_prog
Английский для программистов: t.iss.one/english_forprogrammers
ИИ и технологии: t.iss.one/vistehno
954 ГБ open-source курсов: @courses
ИТ-книги бесплатно: https://t.iss.one/addlist/BkskQciUW_FhNjEy
Max Ai: https://max.ru/ai_machinelearning_big_data
Max python: https://max.ru/pythonl
ТЕХНО: https://max.ru/vistehno
Max Go: https://max.ru/Golang_google
Max Linux: https://max.ru/linuxkalii
Devops: https://max.ru/DevOPSitsec
C#: https://max.ru/csharp_ci
C++: https://max.ru/cpluspluc
SQL: https://max.ru/sqlhub
Java: https://max.ru/javatg
Подписывайся на нужные направления и собирай себе ленту, которая реально двигает вперёд.
Пока кто-то листает шум, ты будешь видеть инструменты, задачи и идеи, которые помогают расти в профессии.
🤮3❤1👍1🔥1
Сегодня покажу вам простую, но мощную технику, которая может прокачать ваш PHP-код — Value Object вместо простых типов.
Мы часто передаём параметры как
Допустим, у вас есть метод:
А теперь скажите честно — сколько раз вы ловили себя на том, что
Вот тут и приходят на помощь Value Object'ы:
Теперь ваш метод будет выглядеть так:
Что мы получаем:
- Валидность данных гарантируется на этапе создания объекта.
- Код становится самодокументируемым — не нужно читать описание, чтобы понять, что именно сюда передаётся.
- IDE и статическая проверка типа не дадут случайно передать
Да, это чуть больше кода. Но это тот случай, когда "больше" — значит надёжнее.
Мы часто передаём параметры как
string, int, array. Всё просто и понятно. Но как только бизнес-логика усложняется — типы начинают нас подводить.Допустим, у вас есть метод:
function sendSms(string $phoneNumber, string $message): void
А теперь скажите честно — сколько раз вы ловили себя на том, что
phoneNumber передаётся в неправильном формате? Или вовсе пустым? Или из другой страны, а вы это не предусмотрели?Вот тут и приходят на помощь Value Object'ы:
final class PhoneNumber
{
public function __construct(private string $number)
{
if (!preg_match('/^\+7\d{10}$/', $number)) {
throw new InvalidArgumentException('Invalid phone number');
}
}
public function value(): string
{
return $this->number;
}
}
Теперь ваш метод будет выглядеть так:
function sendSms(PhoneNumber $phoneNumber, Message $message): void
Что мы получаем:
- Валидность данных гарантируется на этапе создания объекта.
- Код становится самодокументируемым — не нужно читать описание, чтобы понять, что именно сюда передаётся.
- IDE и статическая проверка типа не дадут случайно передать
email вместо phone.Да, это чуть больше кода. Но это тот случай, когда "больше" — значит надёжнее.
👍17🔥1
Сегодня покажу вам простой, но очень удобный приём, который помогает наводить порядок в больших PHP-проектах — использование кастомных коллекций вместо массивов.
Если вы когда-нибудь передавали в методы или возвращали из них массивы с объектами, то наверняка сталкивались с ситуацией, когда непонятно, что в массиве лежит. А потом кто-нибудь передал туда строку или
Я стал использовать свои классы коллекций. Простой пример:
Теперь везде, где раньше был
- типизацию (и защиту от мусора),
- автодополнение в IDE,
- методы прямо в коллекции (например,
- чище и понятнее сигнатуры методов.
Это похоже на коллекции из Laravel, но я использую это везде, даже в маленьких проектах без фреймворков. Такие объекты делают код чище, устойчивее и легче читаемым.
Попробуйте в одном из ваших проектов заменить массивы объектов на такие коллекции — и вы удивитесь, как стало лучше.
Если вы когда-нибудь передавали в методы или возвращали из них массивы с объектами, то наверняка сталкивались с ситуацией, когда непонятно, что в массиве лежит. А потом кто-нибудь передал туда строку или
null — и привет, баги.Я стал использовать свои классы коллекций. Простой пример:
class UserCollection
{
/** @var User[] */
private array $users = [];
public function __construct(array $users = [])
{
foreach ($users as $user) {
$this->add($user);
}
}
public function add(User $user): void
{
$this->users[] = $user;
}
public function all(): array
{
return $this->users;
}
public function filterByActive(): self
{
return new self(array_filter($this->users, fn(User $u) => $u->isActive()));
}
// и так далее
}
Теперь везде, где раньше был
User[], я работаю с UserCollection. Это сразу даёт:- типизацию (и защиту от мусора),
- автодополнение в IDE,
- методы прямо в коллекции (например,
filterByActive, sortByName, first() и т.д.),- чище и понятнее сигнатуры методов.
Это похоже на коллекции из Laravel, но я использую это везде, даже в маленьких проектах без фреймворков. Такие объекты делают код чище, устойчивее и легче читаемым.
Попробуйте в одном из ваших проектов заменить массивы объектов на такие коллекции — и вы удивитесь, как стало лучше.
👍14❤3
Есть возможность поработать на Кипре в одной из самых крупных фантех компаний с говорящим названием — Stripchat 😏
Нанимают senior-инженеров в направлениях: Backend, Frontend и QA.
Как вы понимаете, продукт востребованный, с миллионами активных пользователей.
Задачи: проектирование сервисов, масштабирование платформы, решение ежедневных хайлоад-задач. 200k+ RPS, распределённые системы, event-driven архитектура (PHP, Go).
Обещают полную релокацию на Кипр, EU-контракт, жилье на первое время.
Узнать детали и откликнуться можно тут
Нанимают senior-инженеров в направлениях: Backend, Frontend и QA.
Как вы понимаете, продукт востребованный, с миллионами активных пользователей.
Задачи: проектирование сервисов, масштабирование платформы, решение ежедневных хайлоад-задач. 200k+ RPS, распределённые системы, event-driven архитектура (PHP, Go).
Обещают полную релокацию на Кипр, EU-контракт, жилье на первое время.
Узнать детали и откликнуться можно тут
stripchat-offer.work
Build the platform behind a Top-50 global website
Build products for millions, solve complex engineering challenges, and grow with a team that ships fast.
👍2
Сегодня я покажу вам простой, но мощный способ, как ускорить отладку в Laravel при работе с большим количеством логики в контроллерах и сервисах.
🔍 Ловим баги быстрее с помощью
Обычно мы используем
Спасает Ray — инструмент от Spatie, который интегрируется с Laravel и выводит отладочную информацию в отдельное десктопное приложение.
Пример:
Ты можешь:
- выводить переменные без прерывания скрипта;
- смотреть SQL-запросы в реальном времени;
- использовать цветовые метки, чтобы различать вывод из разных участков кода.
⚙️ Установка
И по желанию установить десктоп-приложение с сайта Spatie.
В
🧠 Совет от себя
Ray особенно хорошо заходит, когда работаешь в команде — ты можешь добавить временный
🔍 Ловим баги быстрее с помощью
ray() от SpatieОбычно мы используем
dd() или dump() в Laravel, чтобы посмотреть, что творится с переменными. Но как только проект становится крупнее — эти методы начинают мешать, особенно когда нужно отслеживать несколько значений в разных местах.Спасает Ray — инструмент от Spatie, который интегрируется с Laravel и выводит отладочную информацию в отдельное десктопное приложение.
Пример:
ray($user);
ray($order)->blue();
ray()->showQueries();
Ты можешь:
- выводить переменные без прерывания скрипта;
- смотреть SQL-запросы в реальном времени;
- использовать цветовые метки, чтобы различать вывод из разных участков кода.
⚙️ Установка
composer require spatie/laravel-ray --dev
И по желанию установить десктоп-приложение с сайта Spatie.
В
config/ray.php можно кастомизировать поведение: включать Ray только на dev-среде, логировать только определённые запросы и т.д.🧠 Совет от себя
Ray особенно хорошо заходит, когда работаешь в команде — ты можешь добавить временный
ray()-лог, не ломая исполнение и не мешая другим.Сегодня я покажу вам, как удобно логировать в Laravel, не засоряя код и не превращая проект в болото из
💡 Используем каналы логирования правильно
Laravel предоставляет мощную систему логирования на базе Monolog. Но часто мы ограничиваемся дефолтным логом. А зря.
Например, создаём отдельный канал для логов оплаты:
Теперь в нужном месте можно писать:
И всё — никакой путаницы. В
👀 Бонус: helper-функция
Чтобы писать меньше:
Теперь вызываем везде просто
Пишите в комментах, какие каналы логирования вы используете и куда пишете — в файл, телегу или Sentry?
Log::info() на каждом шагу.💡 Используем каналы логирования правильно
Laravel предоставляет мощную систему логирования на базе Monolog. Но часто мы ограничиваемся дефолтным логом. А зря.
Например, создаём отдельный канал для логов оплаты:
// config/logging.php
'channels' => [
'payment' => [
'driver' => 'single',
'path' => storage_path('logs/payment.log'),
'level' => 'info',
],
],
Теперь в нужном месте можно писать:
Log::channel('payment')->info('Платёж прошёл', ['user_id' => $user->id, 'amount' => $amount]);
И всё — никакой путаницы. В
laravel.log остаётся только то, что важно для всего проекта, а логи оплаты — отдельно. Можно и в телеграм скидывать, если настроить webhook.👀 Бонус: helper-функция
Чтобы писать меньше:
if (!function_exists('payment_log')) {
function payment_log($message, array $context = []) {
\Log::channel('payment')->info($message, $context);
}
}
Теперь вызываем везде просто
payment_log('Платёж принят').Пишите в комментах, какие каналы логирования вы используете и куда пишете — в файл, телегу или Sentry?
👍8😁4🔥2
🔥 Хочешь быстрее расти в IT? Хватит учиться в одиночку
Окружение решает больше, чем кажется.
Собрал папки и каналы, где можно быстрее влиться в нужное направление, следить за трендами и не вариться в своём пузыре.
AI: t.iss.one/ai_machinelearning_big_data
Python: t.iss.one/pythonl
Linux: t.iss.one/linuxacademiya
Хакинг: t.iss.one/linuxkalii
DevOps: t.iss.one/DevOPSitsec
Docker: https://t.iss.one/+90Z5TAyfuNU5YmRi
Golang: t.iss.one/Golang_google
Rust: t.iss.one/rust_code
C++: t.iss.one/cpluspluc
C#: t.iss.one/csharp_1001_notes
Java: t.iss.one/javatg
JavaScript: t.iss.one/javascriptv
React: t.iss.one/react_tg
Frontend: t.iss.one/front
PHP: t.iss.one/phpshka
Android: t.iss.one/android_its
Мобильная разработка: t.iss.one/mobdevelop
Базы данных: t.iss.one/sqlhub
Data Science: t.iss.one/data_analysis_ml
Big Data: t.iss.one/bigdatai
Математика: t.iss.one/data_math
Физика: https://t.iss.one/+S4hinvO3QI43ZjNi
Kubernetes: t.iss.one/kubernetc
GameDev: https://t.iss.one/gamedev
Haskell: t.iss.one/haskell_tg
Собеседования и карьера:
DS собеседования: t.iss.one/machinelearning_interview
Python собеседования: t.iss.one/python_job_interview
Папка с вакансиями: t.iss.one/addlist/_zyy_jQ_QUsyM2Vi
Папка Go разработчика: t.iss.one/addlist/MUtJEeJSxeY2YTFi
Папка Python разработчика: t.iss.one/addlist/eEPya-HF6mkxMGIy
Папка ML: https://t.iss.one/addlist/2Ls-snqEeytkMDgy
Папка Frontend: https://t.iss.one/addlist/mzMMG3RPZhY2M2Iy
Полезное сверху:
ИТ-мемы: t.iss.one/memes_prog
Английский для программистов: t.iss.one/english_forprogrammers
ИИ и технологии: t.iss.one/vistehno
954 ГБ open-source курсов: https://t.iss.one/+rKBQEMccAA01MTcy
ИТ-книги бесплатно: https://t.iss.one/addlist/BkskQciUW_FhNjEy
Max Ai: https://max.ru/ai_machinelearning_big_data
Max python: https://max.ru/pythonl
ТЕХНО: https://max.ru/vistehno
Max Go: https://max.ru/Golang_google
Max Linux: https://max.ru/linuxkalii
Devops: https://max.ru/DevOPSitsec
C#: https://max.ru/csharp_ci
C++: https://max.ru/cpluspluc
SQL: https://max.ru/sqlhub
Java: https://max.ru/javatg
Подписывайся на нужные направления и собирай себе ленту, которая реально двигает вперёд.
Окружение решает больше, чем кажется.
Собрал папки и каналы, где можно быстрее влиться в нужное направление, следить за трендами и не вариться в своём пузыре.
AI: t.iss.one/ai_machinelearning_big_data
Python: t.iss.one/pythonl
Linux: t.iss.one/linuxacademiya
Хакинг: t.iss.one/linuxkalii
DevOps: t.iss.one/DevOPSitsec
Docker: https://t.iss.one/+90Z5TAyfuNU5YmRi
Golang: t.iss.one/Golang_google
Rust: t.iss.one/rust_code
C++: t.iss.one/cpluspluc
C#: t.iss.one/csharp_1001_notes
Java: t.iss.one/javatg
JavaScript: t.iss.one/javascriptv
React: t.iss.one/react_tg
Frontend: t.iss.one/front
PHP: t.iss.one/phpshka
Android: t.iss.one/android_its
Мобильная разработка: t.iss.one/mobdevelop
Базы данных: t.iss.one/sqlhub
Data Science: t.iss.one/data_analysis_ml
Big Data: t.iss.one/bigdatai
Математика: t.iss.one/data_math
Физика: https://t.iss.one/+S4hinvO3QI43ZjNi
Kubernetes: t.iss.one/kubernetc
GameDev: https://t.iss.one/gamedev
Haskell: t.iss.one/haskell_tg
Собеседования и карьера:
DS собеседования: t.iss.one/machinelearning_interview
Python собеседования: t.iss.one/python_job_interview
Папка с вакансиями: t.iss.one/addlist/_zyy_jQ_QUsyM2Vi
Папка Go разработчика: t.iss.one/addlist/MUtJEeJSxeY2YTFi
Папка Python разработчика: t.iss.one/addlist/eEPya-HF6mkxMGIy
Папка ML: https://t.iss.one/addlist/2Ls-snqEeytkMDgy
Папка Frontend: https://t.iss.one/addlist/mzMMG3RPZhY2M2Iy
Полезное сверху:
ИТ-мемы: t.iss.one/memes_prog
Английский для программистов: t.iss.one/english_forprogrammers
ИИ и технологии: t.iss.one/vistehno
954 ГБ open-source курсов: https://t.iss.one/+rKBQEMccAA01MTcy
ИТ-книги бесплатно: https://t.iss.one/addlist/BkskQciUW_FhNjEy
Max Ai: https://max.ru/ai_machinelearning_big_data
Max python: https://max.ru/pythonl
ТЕХНО: https://max.ru/vistehno
Max Go: https://max.ru/Golang_google
Max Linux: https://max.ru/linuxkalii
Devops: https://max.ru/DevOPSitsec
C#: https://max.ru/csharp_ci
C++: https://max.ru/cpluspluc
SQL: https://max.ru/sqlhub
Java: https://max.ru/javatg
Подписывайся на нужные направления и собирай себе ленту, которая реально двигает вперёд.
Сегодня хочу рассказать вам про одну ошибку, которую я часто встречаю у начинающих PHP-разработчиков — неправильную работу с датами и временем.
Когда вы используете функции вроде date(), strtotime(), time() напрямую без явной установки временной зоны (timezone), ваш код может начать вести себя непредсказуемо. Особенно если ваш проект запущен на серверах в разных регионах.
Чтобы избежать проблем:
- Всегда задавайте временную зону явно через date_default_timezone_set('Your/Timezone'); в начале вашего приложения.
- Или лучше используйте объекты DateTime и DateTimeZone, они гораздо удобнее для работы с временными зонами и манипуляциями с датами.
Пример хорошего подхода:
$date = new DateTime('now', new DateTimeZone('Europe/Moscow'));
echo $date->format('Y-m-d H:i:s');
И еще одна рекомендация — всегда храните даты в базе данных в формате UTC, а уже при выводе преобразовывайте их в нужную временную зону для пользователя.
Небольшая дисциплина в работе с временем сэкономит вам кучу нервов в будущем. Проверено на реальных проектах!
Когда вы используете функции вроде date(), strtotime(), time() напрямую без явной установки временной зоны (timezone), ваш код может начать вести себя непредсказуемо. Особенно если ваш проект запущен на серверах в разных регионах.
Чтобы избежать проблем:
- Всегда задавайте временную зону явно через date_default_timezone_set('Your/Timezone'); в начале вашего приложения.
- Или лучше используйте объекты DateTime и DateTimeZone, они гораздо удобнее для работы с временными зонами и манипуляциями с датами.
Пример хорошего подхода:
$date = new DateTime('now', new DateTimeZone('Europe/Moscow'));
echo $date->format('Y-m-d H:i:s');
И еще одна рекомендация — всегда храните даты в базе данных в формате UTC, а уже при выводе преобразовывайте их в нужную временную зону для пользователя.
Небольшая дисциплина в работе с временем сэкономит вам кучу нервов в будущем. Проверено на реальных проектах!
👍16❤2👎1
🐘 Что нового в PHP 8.6
Релиз запланирован на 19 ноября 2026 года, сейчас версия проходит бета-тестирование.
Из интересного:
* Частичное применение функций — можно заранее передать часть аргументов, оставив остальные на потом:
* `clamp()` — ограничивает значение заданным диапазоном. Например,
* `Time\Duration` — класс для длительности с наносекундной точностью, арифметикой и сравнением.
* Значения по умолчанию для `readonly`-свойств — без возможности менять их после инициализации.
* Новый Polling API — единый интерфейс к механизмам вроде epoll и kqueue для циклов событий.
* Улучшенная обработка ошибок потоков — можно выбирать предупреждения, исключения или тихий режим.
Разбор с примерами — https://laravel-news.com/php-8-6
RFC частичного применения — https://wiki.php.net/rfc/partial_function_application_v2
Релиз запланирован на 19 ноября 2026 года, сейчас версия проходит бета-тестирование.
Из интересного:
* Частичное применение функций — можно заранее передать часть аргументов, оставив остальные на потом:
$makeSlug = str_replace(' ', '-', ?);
echo $makeSlug('Hello World'); // Hello-World
* `clamp()` — ограничивает значение заданным диапазоном. Например,
clamp(150, min: 0, max: 100) вернёт 100.* `Time\Duration` — класс для длительности с наносекундной точностью, арифметикой и сравнением.
* Значения по умолчанию для `readonly`-свойств — без возможности менять их после инициализации.
* Новый Polling API — единый интерфейс к механизмам вроде epoll и kqueue для циклов событий.
* Улучшенная обработка ошибок потоков — можно выбирать предупреждения, исключения или тихий режим.
Разбор с примерами — https://laravel-news.com/php-8-6
RFC частичного применения — https://wiki.php.net/rfc/partial_function_application_v2
Laravel News
What's New in PHP 8.6
PHP 8.6 arrives November 19, 2026 with partial function application, a clamp() function, a Duration class, readonly property defaults, and new deprecations.
❤7👍3🔥1🥰1🎉1
🤖 ИИ-агенты заходят непосредственно в workflow разработки как цифровые сотрудники
В SourceCraft агент получает задачу прямо из GitLab и работает с ней как отдельный участник команды: выполняет поручение под собственной учётной записью и отправляет результат на code review.
Причём workflow не обрывается, если контекста недостаточно. Агент может сам запросить у разработчиков дополнительные данные или согласование и продолжить работу после ответа.
Для команд также доступно подключение собственных агентов — в том числе созданных в Yandex AI Studio.
В SourceCraft агент получает задачу прямо из GitLab и работает с ней как отдельный участник команды: выполняет поручение под собственной учётной записью и отправляет результат на code review.
Причём workflow не обрывается, если контекста недостаточно. Агент может сам запросить у разработчиков дополнительные данные или согласование и продолжить работу после ответа.
Для команд также доступно подключение собственных агентов — в том числе созданных в Yandex AI Studio.
❤3👍3🔥1👏1🥱1
Уязвимость в PHP, потенциально позволяющая скомпрометировать любой PHP-сайт
Разработчики PHP анонсировали публикации сегодня в 17:00 (MSK) экстренных корректирующих выпусков (8.5.12, 8.4.27, 8.3.36 и 8.2.35), в которых будут устранены две критические уязвимости. Всем администраторам серверов с PHP рекомендовано незамедлительно установить исправления на своих системах, сразу после их появления. Официально детали будут раскрыты только после появления исправлений, но судя по появившейся в открытом доступе информации, речь про уязвимости CVE-2026-109618 и CVE-2026-109619, потенциально позволяющие удалённо выполнить свой код на любом сервере, выполняющем PHP-скрипты. Проблема проявляется во всех версиях, начиная с PHP 5.4.
Полный текст:
https://opennet.ru/66516/
https://opennet.iss.one/66516/
Разработчики PHP анонсировали публикации сегодня в 17:00 (MSK) экстренных корректирующих выпусков (8.5.12, 8.4.27, 8.3.36 и 8.2.35), в которых будут устранены две критические уязвимости. Всем администраторам серверов с PHP рекомендовано незамедлительно установить исправления на своих системах, сразу после их появления. Официально детали будут раскрыты только после появления исправлений, но судя по появившейся в открытом доступе информации, речь про уязвимости CVE-2026-109618 и CVE-2026-109619, потенциально позволяющие удалённо выполнить свой код на любом сервере, выполняющем PHP-скрипты. Проблема проявляется во всех версиях, начиная с PHP 5.4.
Полный текст:
https://opennet.ru/66516/
https://opennet.iss.one/66516/
👍7❤2😁1🤣1
Forwarded from Machinelearning
Media is too big
VIEW IN TELEGRAM
ИБ-специалисты в программе Patch the Planet нашли серьёзную брешь в кодовой базе PHP, задевающую все популярные CMS, которая существовала более десяти лет. На момент публикации команда PHP выпустила экстренные обновления безопасности.
На устранение ушло два месяца и пять этапов согласований между мейнтейнерами языка, Calif, Wiz, Cloudflare, CISA и Белым домом, и OpenAI предлагает закрепить эту схему типовым регламентом для раскрытия найденных ИИ проблем безопасности.
Разработчикам и администраторам советуют проверить серверы, для аудита запущенных установок PHP на GitHub выложен диагностический инструмент.
openai.com
Модель ведёт двусторонний разговор в реальном времени и вышла в версиях Mini для простых сценариев и Max для сложных диалогов с вызовом инструментов.
Заявлена поддержка больше 90 языков и каталог на 17 тысяч голосов. Перебивания, паузы и наложение голосов модель разбирает сама, так что отдельные модели распознавания и синтеза речи не нужны.
В бенчмарке Artificial Analysis старшая Max дала точность рассуждений 98,8% при средней задержке ответа 0,57 секунды, тогда как Qwen Audio 3.0 Realtime Plus набрала близкие 99,2%, но отвечала за 1,54 секунды.
Доступ открыт через ElevenAgents и Realtime API, причём транспортный уровень совместим со спецификацией WebSocket от OpenAI, поэтому готовые клиентские SDK работают без переписывания кода.
elevenlabs.io
Компании договорились свести наработки по ускорению PyTorch в открытую библиотеку глубокого обучения oneDNN, которую развивают под эгидой Unified Acceleration Foundation.
Так они рассчитывают убрать разнобой в программной части экосистемы x86, а саму oneDNN признали библиотекой по умолчанию для оптимизации ИИ-задач на процессорах обоих производителей. AMD уже переносит наработки из ZenDNN в кодовую базу oneDNN и входит в управляющий комитет.
Кроме унификации нынешних средств компании проектируют набор инструкций следующего поколения AI Compute Extensions для аппаратного ускорения матричного умножения, его поддержку в PyTorch тоже обещают через oneDNN.
intel.com
Набор инструментов для запуска конвейеров PyTorch на тензорных процессорах опубликован в открытом доступе, и это переводит TPU в разряд полноправных ускорителей наравне с процессорами и видеокартами.
Существующий код запускается с минимальными правками, разработчикам доступны режим отладки, компиляция и примитивы распределённых вычислений.
Инициативу поддержали ключевые проекты открытого ИИ - в transformers добавили выгрузку моделей, а движки vLLM и SGLang получили бэкенды для TPU с непрерывной пакетной обработкой и ядрами Pallas.
google.com
Внутренняя платформа AutoClean непрерывно убирает устаревшие фича-флаги и мёртвый код, с её помощью уже вычищено 16 тысяч флагов и больше миллиона строк.
Агент разбирает контекст и цепочки вызовов, а точечную булеву алгебру и упрощение условий отдаёт движку PolyglotPiranha через протокол MCP, упавшие в CI тесты правят агенты без прав на продуктовый код.
Готовые патчи проходят многоступенчатую проверку, где параллельные агенты смотрят, сохранена ли семантика программы, держится ли фокус строго на целевом флаге и нет ли посторонних правок.
При расхождениях патч отбрасывается сам, а прошедшие проверку задачи уходят инженерам на окончательное утверждение.
uber.com
@ai_machinelearning_big_data
#news #ai #ml
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4💋2
Для уязвимостей PHP2Shell анонсирован первый эксплоит, обходящий рандомизацию адресов
Исследователи из компании VulnCheck заявили о получении первого эксплоита для уязвимости PHP2Shell (CVE-2026-109618б), обходящего механизм рандомизации адресов (ASLR) на системах x86-64 с типовой конфигурацией PHP. Эксплоит позволяет атаковать системы с PHP 8.4.10-8.4.26 в конфигурации по умолчанию. Ранее трудность определения раскладки памяти в модуле mod_php мешала реализации эксплоита, позволяющего добиться выполнения кода на реальных системах. Для обхода ASLR в эксплоите задействована утечка информации об адресах в коде отображения информации об ошибках.
Полный текст:
https://opennet.ru/66529/
https://opennet.iss.one/66529/
Исследователи из компании VulnCheck заявили о получении первого эксплоита для уязвимости PHP2Shell (CVE-2026-109618б), обходящего механизм рандомизации адресов (ASLR) на системах x86-64 с типовой конфигурацией PHP. Эксплоит позволяет атаковать системы с PHP 8.4.10-8.4.26 в конфигурации по умолчанию. Ранее трудность определения раскладки памяти в модуле mod_php мешала реализации эксплоита, позволяющего добиться выполнения кода на реальных системах. Для обхода ASLR в эксплоите задействована утечка информации об адресах в коде отображения информации об ошибках.
Полный текст:
https://opennet.ru/66529/
https://opennet.iss.one/66529/
👍3❤2❤🔥1
Ещё одна уязвимость в PHP, в редких конфигурациях позволяющая удалённо выполнить код
Разработчики проекта PHP предупредили о выявлении ещё одной уязвимости (CVE-2026-115560), которая потенциально может использоваться для удалённого выполнения кода на сервере при определённом редком сочетании нестандартных настроек (не в конфигурации по умолчанию) и выполняемого PHP-кода. Подробности о уязвимости намерены опубликовать после готовности очередных корректирующих выпусков PHP.
Полный текст:
https://opennet.ru/66534/
https://opennet.iss.one/66534/
Разработчики проекта PHP предупредили о выявлении ещё одной уязвимости (CVE-2026-115560), которая потенциально может использоваться для удалённого выполнения кода на сервере при определённом редком сочетании нестандартных настроек (не в конфигурации по умолчанию) и выполняемого PHP-кода. Подробности о уязвимости намерены опубликовать после готовности очередных корректирующих выпусков PHP.
Полный текст:
https://opennet.ru/66534/
https://opennet.iss.one/66534/
❤3👍1