Новое в Symfony 5.1: Разные улучшения (Часть 1)

За последние недели опубликовали десятки статей о наиболее заметных новых функциях Symfony 5.1, которые будут выпущены через несколько дней. В этих заключительных статьях серии мы продемонстрируем некоторые второстепенные, но полезные новые функции, которые упростят вашу работу по разработке.

Добавлены константы для кодов выхода команд

В Symfony 4.4 изменили консольные команды, чтобы они требовали от них возвращать код статуса выхода в виде целого числа. В Symfony 5.1 добавили несколько констант для наиболее распространенных кодов выхода (Command::SUCCESS и Command::FAILURE), чтобы сделать ваш код более читабельным:

// src/Command/CreateUserCommand.php
namespace App\Command;

use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;

class CreateUserCommand extends Command
{
    protected static $defaultName = 'app:create-user';

    // ...

    protected function execute(InputInterface $input, OutputInterface $output)
    {
        // ...

        // Before
        return 0;

        // After
        return Command::SUCCESS;
    }
}

YAML 1.2 восьмеричная запись

В документах YAML 1.1 0 был префиксом, используемым для определения восьмеричных чисел (например, 072). Эта нотация устарела в YAML 1.2, который заменяет префикс 0 на 0o (например, 0o72). Вот почему в Symfony 5.1 добавили поддержку нотации YAML 1.2 и отказались от поддержки формата YAML 1.1.

Улучшенный tempnam()

Функция PHP tempnam() создает файл с уникальным именем в заданном каталоге. Функция tempnam(), предоставляемая компонентом файловой системы Symfony, предоставляет те же возможности, но в Symfony 5.1 улучшили ее с помощью нового необязательного аргумента, который позволяет вам добавить суффикс к сгенерированному имени файла (например, чтобы добавить к нему расширение файла):

use Symfony\Component\Filesystem\Filesystem;

$fs = new Filesystem();

$fs->tempnam('/tmp', 'report_');         // '/tmp/report_Um3nlH'
$fs->tempnam('/tmp', 'report_', '.pdf'); // '/tmp/report_Um3nlH.pdf'

Пользовательские словари для случайных строк

Компонент Symfony String – лучший способ работы со строками в приложениях PHP. В Symfony 5.1 улучшили функцию генерации случайных буквенно-цифровых строк, чтобы вы могли передать собственный словарь символов, который будет включен в сгенерированную строку:

$random = ByteString::fromRandom(6);                   // 'g6UkL2'
$randomPin = ByteString::fromRandom(4, '0123456789');  // '7385'
$randomKey = ByteString::fromRandom(1, 'WASD');        // 'S'