Я переношу последний вариант Усы (2.7) с композитором,
"require": {
"mustache/mustache" : "2.7.*",
// etc...
}
но когда я пытаюсь:
use Mustache\Mustache_Autoloader;
abstract class BaseController {
public function __construct() {
Mustache_Autoloader::register();
/...
}
/...
}
error.log сказал:
PHP Fatal error: Class 'Mustache\\Mustache_Autoloader' not found in
Хотя у Mustache_Autoloader нет пространств имен.
У композитора есть: composer/autoload_namespaces.php
:
return array(
'Mustache' => array($vendorDir . '/mustache/mustache/src'),
//etc
);
И в моем основном файле я не забываю включать require 'vendor/autoload.php';
Но я не знаю, что случилось. Есть идеи? Благодарю.
РЕШЕНИЕ:
Только мне нужно добавить '\' в начале слова. как new \Mustache_Engine()
.
Теперь это работает. Спасибо за вашу помощь :)
Во-первых, почему вы хотите использовать Mustache\Mustache_Autoloader
? композитор должен позаботиться об автозагрузке.
Далее я вижу в https://github.com/bobthecow/mustache.php/blob/master/src/Mustache/Autoloader.php, что этот класс не имеет пространства имен.
Для этого use Mustache\Mustache_Autoloader;
выходит из строя.
Если вы хотите использовать автозагрузчик, вам лучше использовать: require '/path/to/mustache/src/Mustache/Autoloader.php'; Mustache_Autoloader::register();
,
$m = new Mustache_Engine;
в вашем коде. композитор будет автоматически загружать классы. Нет необходимости в усах / автозагрузчике, имхо.