2012-09-14 10 views
5

Próbuję użyć Pakietu w Pakiecie, ale jakoś to się nie udaje.Jak poprawnie zadeklarować zależność do innej paczki w pakiecie?

"repositories": [ 
    { 
     "type": "vcs", 
     "url": "https://github.com/myname/mybundle" 
    } 
], 
"require": { 
    "php": ">=5.3.3", 
    "symfony/symfony": "2.1.*", 
    (...) 
    "myname/mybundle": "*" 
}, 

wydaje się to zadziałać do tej pory. Ale nie mogę wymyślić, jak zadeklarować kolejną zależność w "myname/mybundle".

Próbowałem następujących w pliku composer.json z MyName/mybundle ale żaden z nich nie pracował :(

"repositories": [ 
    { 
     "type": "vcs", 
     "url": "url": "https://github.com/drymek/PheanstalkBundle" 
    } 
], 
"require": { 
    (...) 
    "drymek/PheanstalkBundle": "dev-master" 
} 

i

"repositories": [ 
    { 
     "type": "package", 
     "package": { 
      "name": "drymek/PheanstalkBundle", 
      "version": "dev-master", 
      "source": { 
       "url": "https://github.com/drymek/PheanstalkBundle.git", 
       "type": "git", 
       "reference": "master" 
      } 
     } 
    } 
], 
"require": { 
    (...) 
    "drymek/PheanstalkBundle": "dev-master" 
} 

kiedy rum composer.phar update wszystko mogę to

- myname/mybundle dev-master requires drymek/pheanstalkbundle dev-master -> no matching package found.

+0

Drugi repozytorium w https: //github.com/digitalpioneers/pheanstalk lub na https://github.com/drymek/PheanstalkBundle? –

+0

whoops sorry drymek/PheanstalkBundle ... poprawiono to teraz;) – Senad

Odpowiedz

5

Okej znalazłem odpowiedź here

Podano: Repositories are not resolved recursively. You can only add them to your main composer.json. Repository declarations of dependencies' composer.jsons are ignored.

To jest tak źle ... ale teraz przynajmniej wiem, gdzie umieścić mój dependeny (w pliku composer.json korzenia)

+0

Oznacza to, że kompozytor nie jest ** ** lepszy niż stary plik deps. Zastanawiam się, czy nie jest to zły pomysł, aby rozwiązać go rekursywnie, lub po prostu jeszcze tego nie wdrożyli. – Jens

+0

Przynajmniej możesz wziąć pod uwagę plik composer.json twojego pakietu. Mam do czynienia z naprawdę dziwnym problemem w podobnym scenariuszu. Moje projekty muszą pobierać niestandardowe pakiety zip, w tych pakietach plik composer.json definiuje inne wymagania. Repozytoria tych wymagań są zadeklarowane w pliku root composer.json. Chodzi o to, że po pobraniu pliku zip, rozpakowaniu i umieszczeniu w katalogu dostawcy, kompozytor całkowicie ignoruje jego composer.json, gdzie zdefiniowane są wymagania pakietu ... Jakiś pomysł? –

+0

hej giuliano, przepraszam, ale nie znam odpowiedzi na to ... ale jak widzę, masz i tak odpowiedź na twój temat. ;) http://stackoverflow.com/questions/15023126/composer-ignoring-zip-dependecies-composer-json-file – Senad

0

Dla wiązek zależnościami, proszę zobaczyć moją bibliotekę https://github.com/AshleyDawson/MultiBundle. Na przykład, może rozszerzyć MultiBundle i realizacji getBundles() sposobu, tak jak poniżej:

<?php 

namespace Acme\MyBundle; 

use AshleyDawson\MultiBundle\AbstractMultiBundle; 

class AcmeMyBundle extends AbstractMultiBundle 
{ 
    /** 
     * Optional: define a protected constructor to stop instantiation  outside of registerInto() 
     */ 
    protected function __construct() 
    { 

    } 

    /** 
    * Define bundles that this bundle depends on 
    */ 
    protected static function getBundles() 
    { 
     return array(
      new Acme\FooBundle\AcmeFooBundle(), 
      new Acme\BarBundle\AcmeBarBundle(), 
     ); 
    } 
} 

a następnie w AppKernel zarejestrować pakiet i jest zależności:

// app/AppKernel.php 

// ... 

class AppKernel extends Kernel 
{ 
    // ... 

    public function registerBundles() 
    { 
     $bundles = array(
      // ..., 
     ); 

     // Register my bundle and its dependencies 
     \Acme\MyBundle\AcmeMyBundle::registerInto($bundles); 

     // ... 
    } 
} 
Powiązane problemy