我正在使用composer将第三方软件包导入我的项目。
包的composer.json
使用"classmap"
自动加载其类:
{
...
"name"=>"vendor/project",
...
"require": {
"php": ">=5.2.0"
},
"type": "library",
"include-path":["src/"],
"classmap": [
"src/path/to/lib1",
"src/path/to/lib2"
]
...
}
我的项目composer.json
使用"require"
拉取包裹。
{
...
"require": {
"vendor/project": "m.n.*",
}
...
}
当我在项目中使用它时,我想添加一个可以为该包的所有类添加前缀的命名空间,我可以在composer中执行此操作吗?
我知道我可以在我的项目级别使用自动加载,但可能这些类不需要再次加载,我在哪里指出它?
答案 0 :(得分:2)
如果不编辑项目中的每个文件并在其顶部添加namespace ..
声明,则无法向项目添加命名空间。这可能是不可行的。
如果您命名自己的代码,则不应存在名称冲突的问题 如果库与另一个非命名空间的第三方库冲突,你也无法命名空间,那么你就麻烦了。除非是这种情况,否则没有理由担心它。
如果正确设置了作曲家的定义,那么您只需要使用该类:
$foo = new \VendorClass;
Composer的自动加载将负责加载类,缺少一个缺少的命名空间(见上文)。