en
Feedback

Don't get caught by a cheater! Telemetrio finds and tags such channels πŸ‘‰ If you want to see the tag, subscribe

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΏΡ…ΠΏΡˆΠ½ΠΈΠΊΠ° | PHP, Laravel, Symfony, CodeIgniter

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΏΡ…ΠΏΡˆΠ½ΠΈΠΊΠ° | PHP, Laravel, Symfony, CodeIgniter

Open in Telegram

ВсС самоС ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠ΅ для ΠΏΡ…ΠΏΡˆΠ½ΠΈΠΊΠ° Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ°Π½Π°Π»Π΅. По Ρ€Π΅ΠΊΠ»Π°ΠΌΠ΅: @tproger_sales_bot Π£Ρ‡ΠΈΡ‚ΡŒΡΡ Ρƒ нас: clc.to/M561SQ Для ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ связи: @proglibrary_feeedback_bot РКН: https://gosuslugi.ru/snet/67a5d13cd6fa92100ee6f68b

Show more

πŸ“ˆ Analytical overview of Telegram channel Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΏΡ…ΠΏΡˆΠ½ΠΈΠΊΠ° | PHP, Laravel, Symfony, CodeIgniter

Channel Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΏΡ…ΠΏΡˆΠ½ΠΈΠΊΠ° | PHP, Laravel, Symfony, CodeIgniter (@phpproglib) in the Russian language segment is an active participant. Currently, the community unites 10 461 subscribers, ranking 11 698 in the Technologies & Applications category and 60 802 in the Russia region.

πŸ“Š Audience metrics and dynamics

Since its creation on Π½Π΅Π²Ρ–Π΄ΠΎΠΌΠΎ, the project has demonstrated rapid growth, gathering an audience of 10 461 subscribers.

According to the latest data from 26 October, 2026, the channel demonstrates stable activity. Although there has been a change in the number of participants by -35 over the last 30 days and by -5 over the last 24 hours, overall reach remains high.

  • Verification status: Not verified
  • Engagement rate (ER): The average audience engagement rate is 16.11%. Within the first 24 hours after publication, content typically collects 7.39% reactions from the total number of subscribers.
  • Post reach: On average, each post receives 1 685 views. Within the first day, a publication typically gains 773 views.
  • Reactions and interaction: The audience actively supports content: the average number of reactions per post is 2.
  • Thematic interests: Content is focused on key topics such as php, laravel, ΠΏΡ…ΠΏΡˆΠ½ΠΈΠΊΠ°, artisan, api.

πŸ“ Description and content policy

The author describes the resource as a platform for expressing subjective opinions:
β€œΠ’ΡΠ΅ самоС ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠ΅ для ΠΏΡ…ΠΏΡˆΠ½ΠΈΠΊΠ° Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ°Π½Π°Π»Π΅. По Ρ€Π΅ΠΊΠ»Π°ΠΌΠ΅: @tproger_sales_bot Π£Ρ‡ΠΈΡ‚ΡŒΡΡ Ρƒ нас: clc.to/M561SQ Для ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ связи: @proglibrary_feeedback_bot РКН: https://gosuslugi.ru/snet/67a5d13cd6fa92100ee6f68b”

Thanks to the high frequency of updates (latest data received on 27 October, 2026), the channel maintains relevance and a high level of publication reach. Analytics show that the audience actively interacts with content, making it an important point of influence in the Technologies & Applications category.

10 461
Subscribers
-524 hours
-237 days
-3530 days
Posts Archive
πŸ’‘ 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
Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΏΡ…ΠΏΡˆΠ½ΠΈΠΊΠ°

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΏΡ…ΠΏΡˆΠ½ΠΈΠΊΠ° | PHP, Laravel, Symfony, CodeIgniter - Statistics & analytics of Telegram channel @phpproglib