Mustache_Autoloader отсутствует с Composer

0

Я переношу последний вариант Усы (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().

Теперь это работает. Спасибо за вашу помощь :)

Теги:
composer-php
autoload
mustache
autoloader

1 ответ

2
Лучший ответ

Во-первых, почему вы хотите использовать 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(); ,

  • 0
    Но в composer / autoload_namespaces.php есть: return array ('Mustache' => array ($ vendorDir. '/ Mustache / mustache / src'), // и т. Д.);
  • 0
    да, так что вы можете просто использовать $m = new Mustache_Engine; в вашем коде. композитор будет автоматически загружать классы. Нет необходимости в усах / автозагрузчике, имхо.
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню