Ankündigung

Einklappen
Keine Ankündigung bisher.

Probleme mit Namespace und Composer

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Probleme mit Namespace und Composer

    ich möchte in meinem Projekt zwei Packages nutzen die ich über Composer einbinde. Allerdings gibt es ein Problem mit den Namespaces. Meine Ordnerstruktur sieht wie folgt aus


    package1(PHPMailer)
    |
    |_____Mail.php
    |_____vendor
    |_____composer.json
    |_____composer.lock
    package2(spapi-php)
    |
    |_____Api.php
    |_____vendor
    |_____composer.json
    |_____composer.lock
    index.php


    In der index.php erzeuge ich eine Instanz der Klasse "Mail.php" und der Klasse "API.php". Das sind beides Klassen die ich selbst angelegt habe und über die ich auf das entsprechende Packages zugreifen möchte. In Beiden befindet sich die

    PHP-Code:
    require_once __DIR__ '/vendor/autoload.php'
    und die entsprechenden use Anweisungen.

    Wenn ich aber in der Klasse Mail.php eine Instanz für den PHP Mailer erzeugen möchte, bekomme ich einen Fehler mit den Namespace.

    Wie genau muss ich die Ordnerstruktur gestallten wenn ich mehrere Packages in mein Projekt einbinden möchte.


  • #2
    Die Ordnerstruktur erstellt doch Composer selber? Oder ich verstehe die Frage nicht.

    Kommentar


    • #3
      Wieso hast du überhaupt 2 mal composer.json/lock und den vendor Ordner? Normalerweise gibt es eine composer.json für dein Projekt (von speziellen Situationen mal abgesehen) und dann werden alle deine Abhängigkeiten mittels composer in einen vendor Ordner geladen. Danach bindest du in der index.php die autoload.php ein, wenn dann alles über die index.php läuft und die Api.php etc. inkludiert werden, werden die klassen automatisch geladen.

      Ich glaube du hast da das Konzept noch nicht so ganz verstanden, wie du die Pakete einbindest. Du brauchst da selbst keine Unterordner zu erstellen, du erstellst nur Unterordner für deine eigene Klassen

      Kommentar


      • #4
        Vermute jobo hat ein Pfadproblem bei der Benutzung von composer. Die Ordnerstruktur ist so falsch. Wenn mehrere externe Pakete in einem Projekt genutzt werden liegen diese alle unterhalb des vendor-Verzeichnisses.
        PHP-Klassen auf github

        Kommentar


        • #5
          Ok vielen Dank, hab es jetzt alles in eine composer.json gepackt. Jetzt klappt alles. Bin gerade dabei mich ein bisschen in composer einzuarbeiten.

          Kommentar


          • #6
            bekomme ich einen Fehler mit den Namespace.
            Fehlermeldung?

            Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

            Kommentar


            • #7
              Zitat von jobo Beitrag anzeigen
              ich möchte in meinem Projekt zwei Packages nutzen die ich über Composer einbinde. .
              wir haben hier eine wissensammlung stöbern ,ohnt

              https://php-de.github.io/jumpto/composer/

              Kommentar


              • #8
                Rein theoretisch ist das oben gezeigt auch möglich, allerdings ist davon abzuraten:

                Code:
                ...
                ├── apps
                │   └── my-app
                │       └── composer.json
                ├── packages
                │   └── my-package
                │       └── composer.json
                ...
                composer.json in my-app.

                Code:
                {
                    "repositories": [
                        {
                            "type": "path",
                            "url": "../../packages/my-package"
                        }
                    ],
                    "require": {
                        "my/package": "*"
                    }
                }
                Repositories - Composer (getcomposer.org)

                Kommentar

                Lädt...
                X