2014-11-06 136 views
0

失踪我下载中心胡须(2.7)与作曲家的最后一个版本,Mustache_Autoloader与作曲家

"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';但我不知道发生了什么。任何想法?谢谢。

SOLUTION:

只有我需要在单词的开头加上 '\'。如new \Mustache_Engine()

现在,它的工作原理。感谢您的帮助:)

+0

试试这个“mustache/mustache”:“2.7.0” – justrohu 2014-11-06 11:58:58

+0

它不起作用。 2.7。*这是当前版本,与2.7.0相同。 – Chemaclass 2014-11-06 12:02:49

回答

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中有: 返回数组( 'Mustache'=> array($ vendorDir。'/ mustache/mustache/src'), //等 ); – Chemaclass 2014-11-06 12:14:53

+0

是的,所以你可以简单地在你的代码中使用'''$ m = new Mustache_Engine;'''。作曲家将自动加载课程。不需要胡子/自动加载器,恕我直言。 – ivoba 2014-11-06 12:20:56

+0

但是,我需要在文件的头部写入:'使用Mustache \ Mustache_Engine;'并且我遇到同样的问题... – Chemaclass 2014-11-06 12:23:02