2017-07-23 4 views
-1

Ich bin gerade dabei zu lernen, wie ich den Code, den ich schreibe, besser verwalten kann. Ich habe zwei Projekte, an denen ich gerade arbeite - beide sind in der Entwicklung und beide werden nach GitHub geschoben.Composer Autoload funktioniert nicht nach der Bereitstellung

Ich versuche, das eine Projekt in das andere zu integrieren (indem es eine Abhängigkeit in der composer.json-Datei des Projekts deklariert) - aber nachdem es enthalten ist, fehlen die richtigen Autoload-Konfigurationen.

Ich werde erklären, ein wenig besser: Projekt A der composer.json Datei hat eine automatisch geladen Zeile für „bA-4“ Kartierung des Namespace „src“ Verzeichnis - alles ist gut und zu arbeiten, nachdem ich laufe:

composer install 

Ich bin dann in der Lage, die Datei/vendor/autoload.php aufzunehmen und sofort mit dem Projekt zu arbeiten. Wenn ich mir die generierte Datei "autoload_psr4.php" im Lieferantenverzeichnis des Projekts anschaue, kann ich sehen, dass das Array eine Referenz für das zugeordnete Namespace/Verzeichnis enthält, und zwar für die Datei composer.json.

Das Problem kommt, wenn ich versuche, Projekt A in Projekt B als eine Abhängigkeit aufzunehmen - alles scheint nach der Composer-Installation zu funktionieren - das Lieferantenverzeichnis wird erstellt und die Dateien werden dort kopiert - aber wenn ich mir das erzeugte anschaue "autoload_psr4.php" Datei in Projekt B fehlt das zugeordnete Namespace/Verzeichnis in der composer.json Datei von Project A.

Kann mir jemand zeigen, was ich vermisse, damit die Autoload-Leitung in Project B übernommen wird?

hier die beiden composer.json Dateien:

Projekt A:

{ 
    "name": "jfreynik/hydra-net", 
    "description": "Network classes for the Hydra framework.", 
    "type": "library", 
    "keywords": [ "http", "net", "rest" ], 
    "license": "MIT", 

    "require": { 
     "php": ">=5.3.0" 
    }, 

    "autoload": { 
     "psr-4": { 
      "hydra\\net\\": "src/" 
     } 
    } 
} 

Projekt B:

{ 
    "name": "jfreynik/simple-mvc", 
    "description": "A pretty simple MVC framework for building websites.", 
    "type": "framework", 
    "keywords": [ "MVC", "Website Framework" ], 
    "license": "MIT", 

    "repositories": [ 
     { 
      "type":"package", 
      "package": { 
       "name": "jfreynik/hydra-net", 
       "version":"*-dev", 
       "source": { 
        "url": "https://github.com/jfreynik/hydra-net.git", 
        "type": "git", 
        "reference":"master" 
       } 
      } 
     } 
    ], 
    "require": { 
     "jfreynik/hydra-net": "*-dev" 
    }, 
    "minumum-stability": "dev" 
} 

Danke!

Antwort

0

Das Problem war, dass ich Projekt A in Projekt B als "Paket" einschloss. Ich glaube, dass "Pakete" nicht nach ihren enthaltenen composer.json-Dateien durchsucht werden. (Bitte korrigieren Sie mich, wenn ich falsch liege) - Indem Sie die composer.json-Datei von Project B so ändern, dass sie auf Projekt A als "vcs" verweist, funktioniert das automatische Laden wieder. - Hier ist die eingestellte composer.json Datei für Project B.

{ 
    "name": "jfreynik/simple-mvc", 
    "description": "A pretty simple little MVC framework for building websites.", 
    "type": "framework", 
    "keywords": [ "MVC", "Website Framework" ], 
    "license": "MIT", 

    "repositories": [ 
     { 
      "type":"vcs", 
      "url": "https://github.com/jfreynik/hydra-net" 
     } 
    ], 
    "require": { 
     "jfreynik/hydra-net": "dev-master" 
    }, 
    "minumum-stability": "dev" 
} 

ich Probleme bei der Suche Arbeitsbeispiele wirklich hatte, wie ich wirklich nur fange Komponisten zu bedienen und vor dieser hatte nur professionelle Pakete von packagist enthalten. Ich muss viel lernen (auch in Bezug auf die Terminologie) - wenn also jemand zusätzliche relevante Informationen hinzufügen kann, um ein Entwicklungsprojekt in ein anderes Projekt einzubinden, werde ich Ihre Antwort akzeptieren.

Verwandte Themen