Вот что я хочу сделать: Код (PHP): echo View::make('index'); // Выводит содержимое файла views/index.php echo View::make('index', array('name' => 'abler98', 'foo' => 'bar')); // Выводит содержимое файла views/index.php с присвоением переменных $name и $foo Все что написано выше - сделать легко и просто, но вот как сделать такой вариант: Код (PHP): echo View::make('index') ->with('name', 'abler98') ->with('foo', 'bar'); // Должно сработать как и во втором примере Ведь если View::make() вернет шаблон, то переменные применить к нему уже нельзя. P.S. Нужно чтоб работали все варианты
View::make('index') возвращать должна экземпляр View , как и with() (первая должна создать экземпляр этого класса и вернуть, а вторая - установив переменную, вернуть $this), и ещё один метод в дополнении можно приделать - render(), который уже будет возвращать отработанный шаблон. Видел вариант вместо render использовать магический метод __toString(), но мне больше нравится явный вызов. Добавлено спустя 1 минуту 21 секунду: Код (Text): echo View::make('index', array('name' => 'abler98', 'foo' => 'bar')); - а это через параметр по умолчанию.
На примере можно? То есть вот так? Код (PHP): $view = View::make('index')->with('foo', 'bar'); echo $view->render();
Да, именно так. Можно даже в одну строку при такой реализации, как я написал: Код (Text): echo $View::make('index')->with('foo', 'bar')->render();
Дело ваше. Я очень не люблю, когда что-то в программе происходит неявно. Хотя, конечно, знающий php догадается о магическом методе.
$view будет уничтожена в конце метода, где она родилась. следовательно рендер можно засунуть в деструктор View. тогда вручную его ненужно будет вызывать.