1/YII2: Храним ссылку на страницу сущности в свойствах её модели, а получаем по запросу через метод

За время использования YII2 вывод ссылок на ту или иную страницу привязанную к модели у меня прогрессировал дважды.

На примере записи в блоге продемонстрирую как бы это выглядело у меня:

Стадия 1. Создание и вывод ссылки в представлении:

// В коде представления
use yii\helpers\Url;
...
echo Url::to ( [ 'blog/view' , 'alt' => $blog->alt , 'category_alt' => $blog->category->alt ] );

Плюсы:
- Создание ссылки только тогда когда она требуется на вывод
- Из первого пункта вытекает что обращение к другой модели (категории блогов) производится только когда это надо

Минус:
- Если поменяется принцип формирования ссылок на запись переписывать предстоит во всех местах где она выводится

Пытаясь избавиться от минуса я перешёл к следующей стадии...

Стадия 2. Создание ссылки в моделе и вывод через его свойство:

// В коде модели
use yii\helpers\Url;
...
public $url;
...
public function afterFind ( ) {
    ...
    $this->url = Url::to ( [ 'blog/view' , 'alt' => $this->alt , 'category_alt' => $this->category->alt ] );
    ...
}

// В коде представления
echo $blog->url;

Плюсы:
- Легко исправить принцип формирования ссылки на запись
- Минимализм при использовании в представлениях

Минус:
- Ссылка формируется сразу после определения модели (когда она найдена) и поэтому не важно будет ли она выводится на странице, но запрос к посторонней моделе (категории блогов) будет производиться

Стадия 3 (текущая). Создание ссылки в моделе и вывод через его метод:

// В коде модели
use yii\helpers\Url;
...
private $_url;
...
public function getUrl ( ) {
    if ( is_null ( $this->_url ) )
        $this->_url = Url::to ( [ 'blog/view' , 'alt' => $this->alt , 'category_alt' => $this->category->alt ] );
    return $this->_url;
}

// В коде представления
echo $blog->url;

Плюсы:
- Легко исправить принцип формирования ссылки на запись
- Минимализм при использовании в представлениях
- Ссылка формируется при первичном обращении на вывод и записывается в свойство, что позволяет при повторном вызове сразу выводить её из свойства, а не формировать заново

Я вполне не исключаю, что стадия 3 не финальная в моих поисках оптимизации данного процесса, также возможно что какие-то мои решения в принципе могут показаться кому-то не логичными.