Используя блок автозагрузки composer.json psr4, я определил отображение из пространств имен в пути
"autoload": {
"psr-4": {
"SuiteCRM\\": [
"lib/",
"include/",
"tests/SuiteCRM/",
"tests/unit/lib/SuiteCRM/"
],
"SuiteCRM\\Custom\\": [
"custom/lib"
],
"Company\\Client\\Webpower\\": "custom/wpclient/src",
"Company\\Client\\Repositories\\": "custom/repositories/src"
},
"classmap": [
"Api/"
]
}
Я определил строки
"Company\\Client\\Webpower\\": "custom/wpclient/src",
"Company\\Client\\Repositories\\": "custom/repositories/src"
Структура и расположение упаковки:
/custom
/wpclient
/src
- Auth.php
- Client.php
- Helper.php
- Contact.php
Структура пакета, который не может быть создан
/custom
/repositories
/src
- ContactRepository.php
Все классы в пути / custom / wpclient / src имеют это пространство имен
namespace Company\Client\Webpower;
И файл в пути / custom / repositories / src имеет это пространство имен
namespace Company\Client\ContactRepository;
Когда я использую классы, сценарий прерывается при создании ContactRepository
экземпляра
<?php
require_once 'vendor/autoload.php';
use Company\Client\Repositories\ContactRepository; // Here the script is interrupted
use Company\Client\Webpower;
$contactRepository = new ContactRepository();
$contact = new Contact();
Если я удаляю строку $contactRepository = new ContactRepository();
и пытаюсь просто набрать $contact = new Contact();
, экземпляр контакта создается, как и ожидалось.
В чем причина того, что при создании экземпляра класса ContactRepository
сценарий прерывается?
Я заметил, что phpstorm при определении импорта делает это таким образом, использует Company\Client\Repositories\ContactRepository;
, тогда как для Contact это делает так использует Company \ Client \ Webpower; I не знаю, относится ли это к делу, но я замечаю, что оно отличается от других и имеет похожее пространство имен.
Спасибо за ваш совет