我正在使用作曲家将第三方包导入到我的项目中。
包的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.*",
}
...
}
我想添加一个命名空间,当我在项目中使用它时,它可以为该包的所有类添加前缀,我可以在作曲家中执行此操作吗?
我知道我可以在我的项目级别使用自动加载,但大概这些类不需要再次加载,我在哪里指向它?
如果不编辑项目中的每个文件并在其顶部添加namespace ..
声明,则无法将命名空间添加到项目中。这可能不可行。
如果您将自己的代码命名为命名空间,则应该不存在名称冲突的问题。
如果库与另一个非命名空间的第三方库发生冲突,您也无法将它命名为不可行的命名空间,那么您就有麻烦了。除非是这种情况,否则没有真正的理由担心它。
如果作曲家的定义设置正确,您需要做的就是简单地使用该类:
$foo = new 'VendorClass;
作曲家的自动加载将负责加载类,缺少命名空间无关紧要(见上文)。