在Composer中为导入的第三方包添加名称空间

时间:2014-11-20 11:47:02

标签: php composer-php

我正在使用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中执行此操作吗?

我知道我可以在我的项目级别使用自动加载,但可能这些类不需要再次加载,我在哪里指出它?

1 个答案:

答案 0 :(得分:2)

如果不编辑项目中的每个文件并在其顶部添加namespace ..声明,则无法向项目添加命名空间。这可能是不可行的。

如果您命名自己的代码,则不应存在名称冲突的问题 如果库与另一个非命名空间的第三方库冲突,你也无法命名空间,那么你就麻烦了。除非是这种情况,否则没有理由担心它。

如果正确设置了作曲家的定义,那么您只需要使用该类:

$foo = new \VendorClass;

Composer的自动加载将负责加载类,缺少一个缺少的命名空间(见上文)。