ch
Feedback

不要被骗子欺骗!Telemetrio 会找到并标记这些频道 👉 如果想查看标记,请订阅

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

前往频道在 Telegram

Все самое полезное для пхпшника в одном канале. По рекламе: @tproger_sales_bot Учиться у нас: clc.to/M561SQ Для обратной связи: @proglibrary_feeedback_bot РКН: https://gosuslugi.ru/snet/67a5d13cd6fa92100ee6f68b

显示更多

📈 Telegram 频道 Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter 的分析概览

频道 Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter (@phpproglib) 俄语 语言赛道中的 是活跃参与者。目前社区聚集了 10 461 名订阅者,在 技术与应用 类别中位列第 11 653,并在 俄罗斯 地区排名第 60 713 位。

📊 受众指标与增长动态

自 невідомо 创建以来,项目保持高速增长,吸引了 10 461 名订阅者。

根据 25 十月, 2026 的最新数据,频道保持稳定运转。过去 30 天订阅人数变化为 -29,过去 24 小时变化为 -3,整体触达仍然可观。

  • 认证状态: 未认证
  • 互动率 (ER): 平均受众互动率为 15.48%。内容发布后 24 小时内通常能获得 7.28% 的反应,占订阅者总量。
  • 帖子覆盖: 每篇帖子平均可获得 1 620 次浏览,首日通常累积 762 次浏览。
  • 互动与反馈: 受众积极参与,单帖平均反应数为 2。
  • 主题关注点: 内容集中在 php, laravel, пхпшника, artisan, api 等核心主题上。

📝 描述与内容策略

作者将该频道定位为表达主观观点的平台:
“Все самое полезное для пхпшника в одном канале. По рекламе: @tproger_sales_bot Учиться у нас: clc.to/M561SQ Для обратной связи: @proglibrary_feeedback_bot РКН: https://gosuslugi.ru/snet/67a5d13cd6fa92100ee6f68b”

凭借高频更新(最新数据采集于 26 十月, 2026),频道始终保持新鲜度与高覆盖。分析显示受众积极互动,使其成为 技术与应用 类别中的关键影响点。

10 461
订阅者
-324 小时
-177 天
-2930 天
帖子存档
💡 Laravel tip: filled() для проверки входных данных В Laravel не всегда нужно отдельно проверять наличие поля и его значение
💡 Laravel tip: filled() для проверки входных данных В Laravel не всегда нужно отдельно проверять наличие поля и его значение. 🈶 Если нужно понять, что параметр передан и не является пустым, есть filled():

if ($request->filled('email')) {
    // ...
}
В отличие от has(), здесь проверяется не только наличие ключа, но и то, что значение не является blank. При этом 0 и false считаются заполненными. 📌 Удобный маленький метод, который убирает лишние проверки из условной логики. 🐸 Библиотека пхпшника

🔖 Laravel tip: не загружайте большие файлы целиком в память Если файл нужно переложить из одного хранилища в другое, необязательно делать get() и получать весь файл как строку. ➡️ Laravel умеет работать с потоками:

$stream = Storage::disk('s3')
    ->getDriver()
    ->readStream($sourceFile);

Storage::disk('sftp')->put($targetFile, $stream);
Поток читается и передаётся дальше без необходимости загружать весь файл в память приложения. ➡️ То же самое работает при загрузке локального файла:

Storage::disk('s3')->put(
    $targetFile,
    fopen($sourceFile, 'r')
);
📌 Для небольших файлов разница может быть незаметна. Для сотен мегабайт или гигабайт — уже совсем другая история. 🐸 Библиотека пхпшника

🐘 PHP 8.4: Property Hooks — год спустя, стоит ли ими пользоваться? Property Hooks позволяют описывать логику чтения и записи
🐘 PHP 8.4: Property Hooks — год спустя, стоит ли ими пользоваться? Property Hooks позволяют описывать логику чтения и записи прямо у свойства — без отдельных getX() и setX():

class User
{
    public string $email {
        set => strtolower(trim($value));
    }

    public string $displayName {
        get => ucfirst($this->firstName);
    }
}
Особенно полезны для: → нормализации данных → валидации → вычисляемых свойств → DTO и Value Objects А с asymmetric visibility можно оставить свойство публичным для чтения, но запретить изменение извне:

public private(set) string $email;
📌 Но мигрировать проект только ради Property Hooks не стоит. Если PHP 8.4+ уже используется, hooks хорошо подходят для точечного рефакторинга там, где накопились однотипные getter/setter. ⚠️ Property Hooks несовместимы с readonly. 🔗 Источник 🐸 Библиотека пхпшника

⚡️ PHP 8.6: фичи заморожены PHP 8.6 перешёл в beta-фазу — теперь главное не добавлять новые крупные фичи, а искать проблемы в
⚡️ PHP 8.6: фичи заморожены PHP 8.6 перешёл в beta-фазу — теперь главное не добавлять новые крупные фичи, а искать проблемы в уже вошедших изменениях. Для разработчиков расширений и инструментов это хороший момент подключить PHP 8.6 в CI и проверить совместимость до выхода RC. После feature freeze в ветку ещё могут попадать небольшие исправления и изменения с одобрения Release Managers, но крупные RFC-фичи уже ждут следующего релиза 😬 📌 Если у вас есть PHP-библиотеки, расширения или инструменты вокруг php-src — самое время прогнать их на 8.6. 🐸 Библиотека пхпшника

⚙️ clone() + readonly в PHP 8.5 Классика: есть immutable Value Object, и нужно получить его копию с одним изменённым значением. Раньше для этого часто писали отдельные with...()-методы:

final readonly class Money
{
    public function __construct(
        public int $amount,
        public string $currency,
    ) {}

    public function withAmount(int $amount): self
    {
        return new self($amount, $this->currency);
    }
}
➡️ В PHP 8.5 появился новый вариант clone():

$price = new Money(1000, 'USD');

$discounted = clone($price, [
    'amount' => 850,
]);
В результате $price остаётся прежним, а $discounted получает новое значение amount. Главная фишка: так можно переопределять даже readonly-свойства во время клонирования. Удобно для Value Object, DTO и immutable-моделей, где раньше ради каждого изменения приходилось писать отдельный withSomething(). 🔗 Источник 🐸 Библиотека пхпшника

🔥 В Laravel 13 прокачали локальную разработку Теперь для запуска основного dev-окружения достаточно:

php artisan dev
➡️ Команда собирает в одном терминале сразу несколько процессов:
php artisan dev
       │
       ├── server → php artisan serve
       ├── queue  → queue worker
       ├── logs   → Laravel Pail
       └── vite   → frontend dev server
А управлять всем этим можно прямо из терминального интерфейса: переключаться между общим и раздельным выводом процессов, перезапускать их, очищать логи и искать по выводу. Свои процессы тоже можно зарегистрировать — например, Reverb или listener для Stripe. Меньше отдельных терминалов и ручного запуска сервисов при каждом старте проекта ✅ 🔗 Источник 🐸 Библиотека пхпшника

🤔 Вопрос с собеседования Планируется ли внедрение нативных дженериков в PHP в ближайшем будущем? Например:

class Box<T>
{
    public function __construct(public T $value) {}
}
👇 Правильный ответ (нажми, чтобы прочитать): Пока — нет подтверждённого релиза. В 2026 году появился новый RFC Bound-Erased Generic Types, который предлагал добавить дженерики для классов, интерфейсов, трейтов, функций и методов. В июне предложение вынесли на голосование, но RFC был отклонён. 🈂️ Поэтому на август 2026 года нативных дженериков в PHP нет и конкретной версии, в которой они появятся, тоже нет. На практике generics по-прежнему реализуют через PHPDoc и статические анализаторы вроде PHPStan и Psalm: /** * @template T */ class Box { /** @param T $value */ public function __construct(public mixed $value) {} } 👍 — знал/а 🔥 — стало понятнее 🐸 Библиотека пхпшника

📈 Почему память в PHP-воркерах только растёт — и это нормально Если вы переходите с PHP-FPM на RoadRunner, Laravel Queue или Symfony Messenger — вы увидите один и тот же эффект: Память растёт ступеньками и никогда не падает.
40 → 200 → 350 МБ… и так до перезапуска. Unset, GC, collect_cycles() — не помогают.
Это не утечка. Это архитектура PHP. 🔵 Почему так происходит PHP использует Zend Memory Manager: он выделяет память крупными чанками (2–4 МБ) и не отдаёт их ОС назад, даже если внутри всё освобождено. Каждый пик — новый baseline. Обработали 100k записей → память выросла → процесс будет держать этот объём до конца жизни. 🔥 Что вызывает «разбухание»
ORM ->all() или ->get() на десятки тысяч записей большой файл в file_get_contents() накопление массивов сложные eager-loading графы ORM
✅ Как проектировать правильно — Стриминг вместо коллекций:
User::lazy()->each(fn($u) => processUser($u));
или:

Record::chunk(100, function ($rows) {
    foreach ($rows as $r) processRecord($r);
});
✔️ Doctrine:
foreach ($q->toIterable() as $u) {
    process($u);
    $em->detach($u);
}
— Изоляция тяжёлых операций в функцию — память освобождается при выходе из scope. — Ротация воркеров — обязательна:
Laravel:
php artisan queue:work --max-jobs=1000
RoadRunner:
pool:
  max_jobs: 1000
Messenger:
messenger:consume --limit=1000
🐸 Библиотека пхпшника

📌 Очереди задач: простой способ пакетной обработки Как работает очередь задач на примере создания миниатюр для видео. Цель:
+1
📌 Очереди задач: простой способ пакетной обработки Как работает очередь задач на примере создания миниатюр для видео. Цель: после загрузки видео оно должно высветиться в виде миниатюры Библиотека пхпшника

💡 Laravel-совет Директива @env_required() позволяет проверять, что переменная среды установлена и имеет значение, отличное о
💡 Laravel-совет Директива @env_required() позволяет проверять, что переменная среды установлена и имеет значение, отличное от null. Она может быть полезна для обеспечения того, чтобы приложение работало правильно только при наличии определенных переменных среды. В нашем примере директива @env_required() используется для проверки переменной среды APP_KEY. Если переменная не установлена, будет выброшено исключение. Библиотека пхпшника

😧 Почему strtr() иногда лучше, чем str_replace() Если нужно заменить сразу несколько строк, многие используют str_replace(). Но есть нюанс: замены выполняются последовательно, поэтому результат одной замены может попасть под следующую. 🔴 Например:
$map = [
    'foo'    => 'bar',
    'foobar' => 'foo',
];

$input = 'foobar and foo';

echo str_replace(
    array_keys($map),
    array_values($map),
    $input
);
// bar bar and bar
Сначала "foo" превращается в "bar", поэтому "foobar" становится "barbar" и до второй замены уже не доходит. 🔴 strtr() работает иначе:

echo strtr($input, $map);
// foo and bar
Функция выполняет один проход по строке и всегда выбирает самое длинное совпадение. Уже заменённые части строки повторно не обрабатываются. Благодаря этому:
— не нужно сортировать шаблоны по длине;
— замены не влияют друг на друга;
— результат получается более предсказуемым.
Если требуется заменить несколько независимых подстрок по словарю вида "что" => "на что", strtr() часто оказывается более удачным выбором. Библиотека пхпшника

🤔 У большинства разработчиков уже есть подписки на IDE, GitHub Copilot, Claude, ChatGPT или облачные сервисы. Логично, что о
🤔 У большинства разработчиков уже есть подписки на IDE, GitHub Copilot, Claude, ChatGPT или облачные сервисы.
Логично, что обучение тоже постепенно приходит к той же модели: не покупать отдельный курс под каждую новую тему, а иметь доступ ко всей библиотеке и выбирать, что актуально именно сейчас.
Такой формат недавно появился и в Proglib Academy. Вместо одного курса — доступ сразу ко всей библиотеке и новым материалам, которые появляются в подписке 😎 🔗 Подробнее 🏃‍♀️ Proglib Academy

Кажется, у онлайн-обучения появился формат, которого давно не хватало 👇

Совет по Laravel💡: Встроенная валидация Хотя Laravel предлагает множество правил валидации, иногда возникает необходимость в
Совет по Laravel💡: Встроенная валидация Хотя Laravel предлагает множество правил валидации, иногда возникает необходимость в использовании пользовательских правил. Обычно они записываются в пользовательском классе. Но знаете ли вы, что можно выполнять и валидацию в строке? 🚀 Библиотека пхпшника

🚀 Pipe-оператор в PHP 8.5: конец «пирамиде смерти» Одна из самых ожидаемых возможностей PHP 8.5 — pipe-оператор (|>). Он передаёт результат выражения слева первым аргументом вызываемой функции справа, позволяя строить цепочки преобразований, которые читаются сверху вниз.

// Было
$result = strlen(htmlspecialchars(trim($input)));

// Стало
$result = $input
    |> trim(...)
    |> htmlspecialchars(...)
    |> strlen(…);
Запись ... — это first-class callable. Такой код проще читать, отлаживать и постепенно расширять: каждый этап преобразования явно отделён от предыдущего. Pipe-оператор особенно полезен там, где данные проходят через несколько последовательных функций — меньше вложенности, больше читаемости. 🔗 Источник Библиотека пхпшника

💡 Хорошая шпаргалка по PHP с основными конструкциями языка: синтаксис, функции, массивы, строки, ООП, работа с файлами, обработка ошибок и многое другое. Некоторые примеры относятся к версиям PHP до 8+, но в целом материал остаётся полезным. Библиотека пхпшника

🧑‍💻 Меньше параметров в дочернем методе? Да, если используется variadic Не все знают, что начиная с PHP 8.0 дочерний метод может объявлять меньше именованных параметров, чем родительский. Это возможно, если несколько совместимых параметров заменяются одним variadic-параметром. 🅰️ Например:
class X
{
    public function foo(int $a, string $c, string ...$b): void {}
}

class Y extends X
{
    public function foo(int $a, string ...$b): void {}
}
Такой код полностью корректен. Значение, которое в родительском методе попадало в $c, в дочернем станет первым элементом $b. ➡️ Почему это работает? Потому что дочерний метод по-прежнему принимает все вызовы, допустимые для родительского:

$x->foo(1, 'A');
$x->foo(1, 'A', 'B', 'C');
А вот так уже нельзя:
class Y extends X
{
    public function foo(int $a, int ...$b): void {}
}
или

class Y extends X
{
    public function foo(int $a, string $c, string $d, string ...$b): void {}
}
В первом случае меняется тип параметров, во втором — дочерний метод начинает требовать больше обязательных аргументов. Оба варианта нарушают совместимость сигнатур. 💡 Главное правило простое: при переопределении метод должен принимать как минимум все вызовы, которые были допустимы для метода родительского класса. Библиотека пхпшника

PHP 8.6 вышла на финишную прямую 🚀 Июль оказался насыщенным для PHP 8.6: команда выпустила сразу три тестовые версии — Alpha
PHP 8.6 вышла на финишную прямую 🚀 Июль оказался насыщенным для PHP 8.6: команда выпустила сразу три тестовые версии — Alpha 1, Alpha 2 и Alpha 3. Следующий этап — Beta 1, которая запланирована на 13 августа. После перехода к бета-версии список новых возможностей, как правило, уже сформирован. Дальше основное внимание уделяется исправлению ошибок, совместимости и подготовке к стабильному релизу.
Финальный релиз PHP 8.6 ожидается 19 ноября 2026 года.
💡 Если вы поддерживаете библиотеку, фреймворк или крупное приложение, сейчас хорошее время добавить PHP 8.6 в CI отдельной задачей и прогнать тесты. Найти несовместимость за несколько месяцев до релиза намного проще, чем после выхода стабильной версии. Библиотека пхпшника

🎯 Сжатие и минификация CSS/JS через Node или PHP Команда (Node.js + Terser для JS):

npx terser src/app.js -o dist/app.min.js -c -m
💡 Минифицирует ваш JavaScript, сокращает код и уменьшает размер файлов, используя Terser. Команда (Node.js + CleanCSS для CSS):

npx clean-css-cli -o dist/style.min.css src/style.css
💡 Минифицирует CSS, удаляя пробелы, комментарии и упрощая записи, что ускоряет загрузку страницы. ❓ Зачем это нужно?
🔹 Ускорение загрузки страниц: Меньший размер JS и CSS сокращает время передачи данных. 🔹 Оптимизация производительности: Минифицированный код обрабатывается браузером быстрее. 🔹 Чистый продакшн: Убираются ненужные пробелы и комментарии, что делает код компактным.
⚙️ Дополнительные опции Terser: -c или --compress: Сжимает код, удаляя лишние конструкции. -m или --mangle: Переименовывает переменные и функции, уменьшая размер. --source-map: Генерирует source map для удобного дебага минифицированного кода. Пример с source map: npx terser src/app.js -o dist/app.min.js -c -m --source-map ⚙️ Дополнительные опции CleanCSS: --compatibility — задаёт совместимость с браузерами. --level — уровень оптимизации (1 или 2). Пример:

npx clean-css-cli -o dist/style.min.css src/style.css --level 2
Библиотека пхпшника