Как я знаю, не обязательно «лучший» способ, но есть общий метод, который я видел много раз, и использовал себя. Он обычно включает ассоциативный массив и либо функцию extract(), либо variable variables.
В основном, все, что вы делаете, это настроить ваши данные в ассоциативный массив, используя ключи, которые станут вашими переменными шаблона.
//inside the controller
$data['name'] = 'my name';
$data['zip'] = '90210';
$data
массив переходит в руки зрения каким-то образом, прямо или косвенно, и экстрагируют с помощью extract()
или с помощью цикла переменных величин (то же самое, на самом деле). Затем шаблон может быть включен, а переменные находятся в локальной области.
//inside the view rendering process
extract($data);
//$name and $zip now exist
Код Igniter следует этой точной процедуре. Внутри system\libraries\Loader.php
в последней версии (1.7.1) есть функция с именем view()
, которую вы вызываете в контроллере CI для загрузки представления/шаблона (то же самое действительно в CI). Вы передаете массив данных в качестве второго параметра.
view()
вызывает внутреннюю функцию, называемую _ci_load()
, в том же файле, в котором извлекаются данные, которые вы передавали (и делает некоторые другие пустые файлы кеширования). Ваши переменные готовы к работе после этого в области локальных функций и могут управляться внутри шаблона после последующего include()
, так как все, что происходит во включенном файле, также существует в локальной области _ci_load()
.
Я использовал ту же самую конструкцию в быстром и грязном домашнем MVC, созданном ранее. Это довольно эффективно.
Это очень специфично для вашего фреймворка (я полагаю, вы сами сворачиваете), возможно, вы захотите дать еще несколько деталей. – deceze