Есть ли в Yii2 аналог ларавелевского хелпера optional() или как можно в Yii2 запилить свой глобальный хелпер?

Да, в Yii2 есть аналог ларавелевского хелпера optional(). Для этого вы можете использовать хелперы Yii2, а именно функцию ArrayHelper::getValue(). Эта функция позволяет безопасно получать значения из массивов или объектов, чтобы избежать ошибок, связанных со существованием или отсутствием определенного ключа или свойства.

Итак, для использования функции ArrayHelper::getValue() с аналогом функции optional() из Laravel в Yii2, необходимо сделать следующее:

1. Включите в вашем приложении пространство имён класса ArrayHelper:

use yiihelpersArrayHelper;

2. Теперь вы можете использовать функцию ArrayHelper::getValue() для безопасного доступа к свойствам или элементам массива. В качестве первого аргумента передайте массив или объект, а вторым аргументом передайте путь к свойству или ключу, который хотите получить. Третий аргумент - это значение по умолчанию, которое будет возвращено, если свойство или ключ не существуют.

$value = ArrayHelper::getValue($array, 'key', 'default value');

В этом примере, если ключ 'key' существует в массиве $array, то его значение будет присвоено переменной $value. В противном случае, если ключ не существует, переменной $value будет присвоено значение 'default value'.

3. Если вам нужно обратиться к вложенным свойствам, вы можете указать путь через точку. Например:

$value = ArrayHelper::getValue($object, 'property.subproperty', 'default value');

Это позволяет безопасно получить значение из вложенного объекта или массива, даже если промежуточные свойства не существуют.

4. Если вы хотите использовать функцию ArrayHelper::getValue() как глобальный хелпер, вы можете создать свой собственный глобальный хелпер в Yii2. Для этого создайте файл helper.php в директории, например, common/components, и определите свои собственные функции, которые вы хотите использовать в качестве глобальных хелперов. Например:

<?php

function optional($array, $key, $default = null)
{
    return yiihelpersArrayHelper::getValue($array, $key, $default);
}

5. После создания глобального хелпера, включите его в вашем приложении, добавив следующую строку кода в файл конфигурации приложения (common/config/main.php):

'aliases' => [
    '@common/helpers' => '@common/components',
],

6. Теперь вы можете использовать ваш глобальный хелпер optional() в любом месте вашего приложения:

$value = optional($array, 'key', 'default value');

В этом примере, optional() будет эквивалентно вызову ArrayHelper::getValue().