2014-01-08 3 views
1

Для проекта, над которым я работаю, я хотел бы создать пакет «Core», содержащий несколько меньших пакетов, например, laravel с его каркасом. структура папок будет что-то вроде этого,Laravel framework как пакет, дамп-автозагрузка не работает

Package1: gybrus/core/src/Gybrus/Package1 
Package2: gybrus/core/src/Gybrus/Package1 

После выполнения некоторых исследований я заметил, это может быть достигнуто с композитором, если я не ошибаюсь, но это также, где он ломает для меня. В настоящее время у меня есть несколько файлов composer.json, но после запуска команды «php artisan dump-autoload» классы не добавляются в файлы автозагрузки. Поэтому мне интересно, добавляет ли рамка Laravel дополнительную магию, чтобы это произошло.

Заранее благодарен!

Это моя текущая настройка, я изменил имена пакетов, чтобы не рекламировать что-либо;) Первый файл-композитор находится в папке «core» рядом с папкой «src».

{ 
    "name": "gybrus/core", 
    "description": "The Core", 
    "keywords": ["core"], 
    "authors": [ 
    { 
     "name": "Kevin Dierkx", 
     "email": "[email protected]" 
    } 
    ], 
    "require": { 
    "php": ">=5.3.0", 
    "laravel/framework": "4.0.x" 
    }, 
    "replace": { 
    "gybrus/package1": "self.version" 
    }, 
    "require-dev": { 
    "mockery/mockery": "dev-master", 
    "phpunit/phpunit": "3.7.*" 
    }, 
    "autoload": { 
    "psr-0": { 
     "Gybrus": "src/" 
    } 
    }, 
    "minimum-stability": "dev" 
} 

Второй файл композитор находится в папке упаковке1:

{ 
    "name": "gybrus/package1", 
    "authors": [ 
     { 
      "name": "Gybrus", 
      "email": "[email protected]" 
     } 
    ], 
    "require": { 
     "php": ">=5.3.0", 
     "illuminate/support": "4.0.x" 
    }, 
    "autoload": { 
     "psr-0": {"Gybrus\\Package1": ""} 
    }, 
    "target-dir": "Gybrus/Package1", 
    "minimum-stability": "dev" 
} 
+0

Er - у вас есть несколько композитных файлов в одном пакете? – Danack

+0

Да, этот пакет содержит несколько меньших пакетов. Рамка laravel делает что-то подобное, проблема заключается в том, что я не понимаю, как это работает, как в larvel framework. –

ответ

0

Нашел причину моей проблемы!

Первый скрипт говорит композитору, что он должен автозагружать пространство имен «Gybrus», начиная с папки «src», после некоторого тестирования это работает по назначению. Если указанные перерывы установки является следующей строкой:

return Finder::create()->files()->in($workbench)->name('composer.json')->depth('< 3'); 

Это говорит Finder, чтобы остановить ищу composer.json файлы, которые глубже, чем 2 папки. Ничего странного.

Где идет ошибка, здесь я привязал пакеты рабочего места в папку рабочего стола. Это вызывает странную проблему, что файлы composer.json на самом деле глубже, чем они должны быть, что в результате останавливает загрузку файлов composer.json и нарушает автозагрузку для этих пакетов.

Быстрое исправление заключается в том, чтобы либо не ссылаться на ссылки, либо выполнять установку композитора изнутри пакета.

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