Какова лучшая практика для создания экземпляра объекта для использования в проекте, а не в каждом методе или классе контроллера?

Я хочу использовать шаблоны в проекте Codeigniter-4.

Если бы мой контроллер выглядел так

class Blog extends \CodeIgniter\Controller
{
        public function index()
        {
                $data = [
                        'todo_list' => ['Clean House', 'Call Mom', 'Run Errands'],
                        'title'     => "My Real Title",
                        'heading'   => "My Real Heading"
                ];

                echo view('blogview', $data);
        }
}

Я хочу использовать систему шаблонов, которая работает как показано ниже:

// Create new Plates instance
$templates = League\Plates\Engine::create('/path/to/templates');

// Render a template with the given data
echo $templates->render('profile', ['name' => 'Jonathan']);

Мой вопрос - что является лучшим местом для реализации этого $templates объект?

Я могу повторить это в каждом методе, который я знаю наверняка, является плохой практикой..... ИЛИ... Я мог бы сделать это в __contstructor() и назначить $this->templates и я делаю это для каждого контроллера, где я хочу использовать этот шаблон. Я чувствую, что есть еще лучший способ.

У меня мало опыта в Laravel, где я специально не устанавливаю эту переменную $templates для использования шаблонов Blade, вместо этого она просто вызывает View(). Я хочу добиться чего-то подобного, если это возможно. Я пометил laravel, чтобы кто-нибудь с большим опытом в Laravel мог лучше понять, как этого добиться?

Что ты предлагаешь?

PS: я использую автозагрузку композитора для загрузки всех файлов.

0 ответов

Боюсь, что на самом деле я только пользователь CI3, но я немного читал о CI4, и все еще есть базовый контроллер, который вы можете использовать. Вам следует взглянуть на https://codeigniter4.github.io/userguide/extending/basecontroller.html?highlight=basecontroller. Затем вы сделаете свои шаблоны $this-> доступными через все расширенные контроллеры.

Другие вопросы по тегам