Автоматическая загрузка композитора psr-4 не добавляет пространство имен в автоматическую загрузку psr4.php


Я использую в проекте пользовательский репозиторий на github, который содержит мой набор инструментов.

Проект правильно импортирует пакет в каталог /vendor, но я не могу использовать ни один из классов, потому что он не загружает содержимое пакета автоматически.

Мой файл composer.json пакета выглядит следующим образом:

{
"name": "mynamespace/toolbox",
"description": "Asdfoobar.",
"keywords": ["mynamespace", "toolbox"],
"license": "MIT",
"require": {
    "php": ">=5.4"          
},
"require-dev": {
    "codeception/codeception": "2.0.2",
    "codeception/specify": "0.3.6",
    "codeception/verify": "0.2.7",
    "mockery/mockery": "0.9.1"
},
"autoload": {
    "psr-4": {
        "Mynamespace\\": "src/Mynamespace",
        "Mocks\\": "tests/Mocks"
    }
},
"scripts": {
    "post-install-cmd": [

    ],
    "post-update-cmd": [
        "php vendor/bin/codecept run"
    ]
},
"config": {
    "preferred-install": "dist"
},
"minimum-stability": "stable"

}

Вместо этого внутри проекта файл composer.json выглядит следующим образом:

    "require": {
       [...stuff...]
       "Mygitrepo/toolbox": "dev-master" 
    },
    "repositories": [        
    {
        "type": "package",
        "package": {
            "name": "Mygitrepo/toolbox",
            "version": "master",
            "source": {
                "url": "https://github.com/Mygitrepo/toolbox.git",
                "type": "git",
                "reference": "master"
            }
        }
    }
]

Окончательный autoload_psr4.php после выполнения обновление композитора, дамп композитора выглядит следующим образом: Никаких следов "Mynamespace"

return array(
  'Monolog\\' => array($vendorDir . '/monolog/monolog/src/Monolog'),
  'Ivory\\LuceneSearchBundle\\' => array($vendorDir . '/egeloen/lucene-search-bundle'),
  'Facebook\\' => array($vendorDir . '/facebook/php-sdk-v4/src/Facebook'),
);

Есть какая-нибудь помощь?

Author: Stormsson, 2014-08-01

1 answers

Этот ответ применим и здесь.

Поскольку вы предоставляете запись "тип:пакет" в "репозитории", вы отключаете файл composer.json в пакете.

И в определении пакета не определена автоматическая загрузка, поэтому пакет вообще не загружается автоматически.

Решение: Не используйте запись "тип:пакет" для репозиториев, которыми вы владеете и в которых есть файл composer.json.

 11
Author: Sven, 2017-05-23 12:02:00