PHPSpec и два определения пространства имен PSR-4

#php #tdd #phpspec

#php #tdd #phpspec

Вопрос:

Заранее приношу извинения, если этот вопрос был задан где-то еще или даже здесь (результаты поиска не дали мне того, что я искал). Я хотел бы настроить свой основной файл так, чтобы он размещался в моем собственном пространстве имен, между тем, скажем, пространство имен приложения находится где-то.

Ниже показано, как предполагается установить файловую структуру.

 app/Rentals
src/Core
  

Фактически, с учетом структуры каталогов, я могу иметь следующую запись автоматической загрузки psr-4 в файле composer.json.

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

Наконец, я собираюсь показать вам мой текущий файл phpspec.yaml и конфигурацию, которую он содержит прямо сейчас.

 suites:
  selocrast_suite:
    namespace: Selocrat

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

  extensions:
    LeanPHPPhpSpecCodeCoverageCodeCoverageExtension: ~
  

Как это, возможно, видно из приведенного выше файла конфигурации, я внес несколько изменений, чтобы заставить работать хотя бы одно пространство имен (по умолчанию). С чем я борюсь, так это с наличием нескольких наборов, указывающих на разные каталоги пространства имен.

Тип Rental Component ModelEntity Simple был сгенерирован, но его не удалось загрузить. Вам нужно настроить au toloader?

Мне трудно двигаться дальше с этой настройкой — это то, что PHPSpec применяет на уровне кода? Если нет, то что я мог тогда делать неправильно?

Ниже приведена версия, в которой я нахожусь:

 $ bin/phpspec --version
phpspec 4.3.2

  

Это вопрос создания расширения для управления моим вторичным пространством имен?

Ответ №1:

Я думаю, вам следует изменить конфигурационный файл следующим образом

 suites:
  selocrast_suite:
    namespace: Selocrat
    psr4_prefix: Selocrat

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

  [...]
  

Комментарии:

1. Спасибо, я попробую это и вернусь к этому ответу с согласием, если это поможет решить мою проблему. Я нахожу использование двух отдельных файлов конфигурации сложным, поскольку всегда приходится указывать их при каждой команде запуска / описания PHPSpec. Спасибо

2. В итоге я создал отдельные файлы конфигурации и просто запускаю свои команды PHPSpec отдельно, указав нужную конфигурацию. Мне не очень нравится этот подход, но он сработал для того, что мне нужно было сделать