2012-09-03 7 views
19

Ich habe ein neues Projekt gestartet, in dem ich Composer verwende, um einige Abhängigkeiten sowie deren automatisches Laden zu behandeln.Benutzerdefinierte Code-Verwaltung mit dem Composer-Auto-Loader?

Ich behalte nur die Datei composer.json im VCS statt des gesamten Lieferantenverzeichnisses, also möchte ich nicht damit anfangen, meinen Code dort einzufügen.

Wie soll ich mit meinem eigenen projektspezifischen Code umgehen, damit er automatisch geladen wird?

Antwort

39

Das ist eigentlich sehr einfach. Das Ausschließen des Lieferantenverzeichnisses aus Ihrem Repository ist der richtige Ansatz. Ihr Code sollte an einem separaten Ort (wie src) gespeichert werden.

die autoload Eigenschaft verwenden, der Komponist erkennt Ihren Namensraum (n) zu machen:

{ 
    "autoload": { 
     "psr-4": { 
      "Acme\\": "src/" 
     } 
    } 
} 

Sie haben Klassennamen der Standard bA-4 folgende Unter der Annahme, sollte es funktionieren. Im Folgenden sind einige Beispiel für Klassennamen und ihre Positionen auf dem Dateisystem:

  • Acme \ Command \ HelloCommand -> src/Befehl/HelloCommand.php
  • Acme \ Formular \ Art \ EmployeeType -> src/Form/Typ/EmployeeType.php

Denken Sie daran, einen Namespace für jede Klasse zu definieren. Hier ist ein Beispiel von Acme \ Command \ HelloCommand:

<?php 

namespace Acme\Command; 

class HelloCommand 
{ 
} 

Vergessen Sie nicht, den Autoloader in Ihrem PHP-Controller enthalten:

<?php 

require 'vendor/autoload.php'; 

Lesen Sie mehr über PSR-4 standard on PHP Framework Interoperability Group. Wenn Sie composer.json bearbeiten, müssen Sie entweder install, update oder dump-autoload ausführen, um die Autoloader-Klassenpfade zu aktualisieren.

+2

Sie könnten die Antwort mit einfachen Code-Beispielen mit einer oder zwei Dummy-Klassen aktualisieren? Obwohl ich die Dokumentation gelesen habe, mit der du verlinkt hast, und mein Verzeichnis/Namespacing mit denen in Vendor/vergleichen, kann ich meine Klassen nicht laden. – Letharion

+3

@Letharion aktualisiert meine Antwort, hoffentlich wird dies helfen. –

Verwandte Themen