我刚开始使用Composer,但我无法真正掌握如何解决以下问题: 如何设置所以我不必在使用类时使用\ Other \ (即所以我的自定义类的工作方式与Mustache类相似)
此作品
$mustache = new Mustache_Engine();
$foo = new \Other\SimpleClass();
这不起作用
$foo = new SimpleClass();
composer.json
{
"autoload": {
"psr-0": {
"Other": "lib/",
"Mustache": "lib/"
}
}
}
文件夹结构
/lib
/Mustache
/Other
我已在我的其他文件夹
中的所有文件中输入了namespace Other;
答案 0 :(得分:0)
我该怎么设置所以我不必在使用类时使用\ Other \?
不要争取不使用名称空间。
不使用名称空间只对真正小的脚本有意义,这些脚本独立运行并且不会重用其他供应商(组件/库)的代码片段。
我仍然不明白为什么
$mustache = new Mustache_Engine();
不一定是$mustache = new \Mustache\Mustache_Engine();
Mustache_Engine
尚未命名(
他们使用string-prefix-namespace:他们只需将Mustache_
添加到类名Engine
,以避免类名与其他名为Engine
的类冲突。此代码将在旧版和新版PHP上运行。
最后,当Mustache开发人员更新代码以使用命名空间时,它将来\Mustache\Engine
。此代码仅在PHP版本上运行,它支持名称空间作为语言功能。
自动加载小胡子
如果您使用Composer
安装了Mustache{
"require": {
"mustache/mustache": "^2.9"
}
}
然后Composer将自动为Mustache生成自动加载。
您无需向composer.json
添加PSR-0指令即可使其正常工作。
如果您手动将Mustache下载并解压缩到/lib
文件夹中,则只需设置PSR-0。这是使用依赖项的旧方法 - 改为使用Composer。