首页 > 解决方案 > PHPSpec 和两个 PSR-4 命名空间定义

问题描述

如果在其他地方或什至在这里问过这个问题,请提前道歉(搜索结果没有给我我想要的东西)。我想将我的核心文件配置为同时存在于我自己的命名空间中,例如,应用程序命名空间位于某个地方。

以下是文件结构的拟定方式。

app/Rentals
src/Core

实际上,考虑到目录结构,我可以在 composer.json 文件中拥有以下 psr-4 自动加载条目。

{
   ...,
     "psr-4": {
        "Rentals\\": "app/",
        "Selocrast\\": "src/"
    }
}

最后,我将向您展示我当前的 phpspec.yaml 文件以及它现在包含的配置。

suites:
  selocrast_suite:
    namespace: Selocrat

  rawson_suite:
    namespace: Rentals
    src_path: "%paths.config%/app"

  extensions:
    LeanPHP\PhpSpec\CodeCoverage\CodeCoverageExtension: ~

正如在上面的配置文件中可能看到的那样,我做了一些调整以使至少一个命名空间能够工作(默认)。我正在努力让多个套件指向不同的命名空间目录。

类型 Rental\Component\Model\Entity\Simple 已生成但无法加载。你需要配置一个 au toloader 吗?

我发现很难继续进行此设置是 PHPSpec 在代码级别强制执行的吗?如果没有,那我会做错什么?

以下是我所在的版本:

$ bin/phpspec --version
phpspec 4.3.2

是否需要创建一个扩展来管理我的辅助命名空间?

标签: phptddphpspec

解决方案


我认为你应该修改配置文件如下

suites:
  selocrast_suite:
    namespace: Selocrat
    psr4_prefix: Selocrat

  rawson_suite:
    namespace: Rentals
    psr4_prefix: Rentals
    src_path: "%paths.config%/app"

  [...]

推荐阅读