2016-05-26 6 views
0

(Прежде чем я начну, я видел двух одинаковых вопросов, как установить тип хранилища для «пакет», который НЕ мой вопрос здесь.)PHP Composer не добавляет пространство имен autoload_psr4

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

Вот зависимости composer.json:

{ 
    "name": "company/authentication", 
    "description": "User authentication", 
    "require": {}, 
    "require-dev": { 
     "phpunit/phpunit": "4.5.*" 
    }, 
    "autoload": { 
     "psr-4": { 
      "Company\\Authentication\\": "src/" 
     } 
    } 
} 

А вот родитель composer.json где я включаю вышеуказанный файл:

{ 
    "config": { 
    "vendor-dir": "_framework/vendor", 
    "secure-http": false 
    }, 
    "repositories": [ 
    { 
     "type": "composer", 
     "url": "composer.<REDACTED>.com" 
    } 
    ], 
    "require-dev": { 
    "phpunit/phpunit": "4.5.*", 
    "phpunit/dbunit": ">=1.2", 
    "phpunit/phpunit-selenium": ">=1.2" 
    }, 
    "require": { 
    "company/authentication": "1.0.*" 
    } 
} 

И, наконец, это автоматически генерируемый autoload_psr4 файл:

// autoload_psr4.php @generated by Composer 

$vendorDir = dirname(dirname(__FILE__)); 
$baseDir = dirname(dirname($vendorDir)); 

return array(
    'Symfony\\Component\\Yaml\\' => array($vendorDir . '/symfony/yaml'), 
    'Doctrine\\Instantiator\\' => array($vendorDir . '/doctrine/instantiator/src/Doctrine/Instantiator'), 
); 

И как сказано ниже, я не использую Satis, вместо этого я вручную создал базовый репозиторий. Это мой packages.json файл для моего репозитория:

{ 
    "packages": { 
     "company/authentication": { 
      "1.0.0": { 
       "name": "company/authentication", 
       "version": "1.0.0", 
       "dist": { 
        "url": "http://composer.company.com/repo/authentication-1.0.0.zip", 
        "type": "zip" 
       } 
      } 
     }, 
etc... 

А вот мой composer.lock файл:

{ 
    "_readme": [ 
     "This file locks the dependencies of your project to a known state", 
     "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", 
     "This file is @generated automatically" 
    ], 
    "hash": "f67a284cbfcb2cf6ae3765266015710b", 
    "content-hash": "57c9067e1b3a3bb7fef45eeabb928ffd", 
    "packages": [ 
     { 
      "name": "company/authentication", 
      "version": "1.0.0", 
      "dist": { 
       "type": "zip", 
       "url": "http://composer.company.com/repo/authentication-1.0.0.zip", 
       "reference": null, 
       "shasum": null 
      }, 
      "type": "library" 
     } 
    ], 
    "packages-dev": [], 
    "aliases": [], 
    "minimum-stability": "stable", 
    "stability-flags": [], 
    "prefer-stable": false, 
    "prefer-lowest": false, 
    "platform": [], 
    "platform-dev": [] 
} 
+0

можно ли увидеть ваш 'satis.json'? – Federkun

ответ

1

Вы, вероятно, необходимо обновить данные пакеты. Вы можете сделать это, как documentation предполагают, с:

php bin/satis build <configuration file> <build dir> 

Пример:

php bin/satis build satis.json web/ 

Вы должны делать это каждый раз, когда вы что-то изменить твое composer.json файлов.

+0

Я не использую Satis, я создал репозиторий, и, кажется, композитор копирует все, как ожидалось, за исключением материалов автозагрузчика. Я добавил файл конфигурации моего репозитория к вопросу. – Wige

+0

Вы можете удалить папку кэша композитора с помощью 'composer clear-cache' и снова запустить' comper install '? – Federkun

+0

Я это сделал, такой же результат. Я действительно вручную удалял кеш - clear-cache, похоже, не полностью удаляет файлы. – Wige

1

Спасибо, что посмотрели. Я обнаружил, что проблема заключается в том, что параметры зависимостей и автозагрузки должны быть в файле composer.json библиотеки и в файле packages.json на сервере репозитория. Похоже, что содержимое файла composer.json импортированных зависимостей игнорируется композитором.

Это полностью меня смущает - почему композитор смотрит на метаинформацию сервера, чтобы узнать, что такое зависимости, а не файл composer.json, который встроен в код?

Смежные вопросы