Namespace Twig + composer

Рейтинг: 0Ответов: 1Опубликовано: 23.03.2015

Добрый день, возникла следующая проблема. Установил через composer шабланизатор Twig. Проблемы в том, что он не видит namespace. Код приложения следующий.

include_once 'vendor/autoload.php'; // Компосер

include_once 'autoloadPSR4.php'; // Свои классы

$c_loader = new Autoload\Psr4AutoloadClass;
$c_loader->register();
$c_loader->addNamespace('app\Model', __DIR__ .'/models/');
$c_loader->addNamespace('app\Presenter', __DIR__ .'/presenter/');
$c_loader->addNamespace('app\ServiceClasses', __DIR__ .'/service_classes/');

use app\Presenter as Presenter;

$router = new Presenter\router($_GET);

$router->LoadController();

Каким образом я могу подключить Twig? Так

use Twig_\Twig as Twig;
$loader = new Twig\Twig_Loader_String();
$twig = new Twig\Twig_Environment($loader);

Ответы

▲ 1Принят

@barseon, по поводу вызова метода и был пример

class Foo
{
    public function bar($baz, $biz)
    {
        echo "$bar is not $biz";
        return false;
    }
}

$callable = array(new Foo, 'bar'); // первый элемент - объект, второй - имя метода. объект был создан на месте или был передан - нам без разницы. В данном случае тут был бы экземпляр контроллера и имя одного из его методов.
$arguments = array('baz', 'biz'); // список фргументов метода
$result = call_user_func_array($callable, $arguments); // неопсредственно вызов метода

По поводу "как передать в контроллер данные и шаблон".
Этим и занимается контроллер в MVC. Фронт-контроллер и приложение запускают контроллер, и на этом их ответственность (в таком примере) кончается. Все остальное ложится на плечи контроллера. Может, ему json надо отдавать - что, тоже через Twig?