Sprache:

Suche

PSR4 Automatisches Laden Ihrer PHP-Dateien mit Composer

  • Teilen:
PSR4 Automatisches Laden Ihrer PHP-Dateien mit Composer

In diesem Artikel erhalten Sie eine kurze Einführung in die Einrichtung von PSR4 Autoloading mit Composer in Ihrem Projekt.

Um diesem Artikel folgen zu können, sollten Sie die folgenden Voraussetzungen kennen.

Bis jetzt sollten Sie Composer installiert und eventuell eine composer.json -Datei mit composer init erstellt haben. Wenn nicht, können Sie jetzt eine Datei manuell im Stammverzeichnis Ihres Projekts erstellen.

$ touch composer.json

PSR4-Autoloading einrichten

Da es hier um die Einrichtung des PSR4-Autoloadings geht, bearbeiten wir die Datei composer.json entsprechend.

"autoload": {
    "psr-4": {
        "App\\": "app/"
    }
}

Was ist hier los?

Das Grundlegendste, was man hier verstehen muss, sind der Anbieter und die Anwendung.

App ist der Name des Anbieters Ihrer Anwendung. Sie können diesen Namen verwenden, wenn Sie Dateien innerhalb Ihres App-Verzeichnisses benennen, wie z. B.:

namespace App/User;

Lesen Sie auch: Erfahren Sie mehr über Namespaces in PHP.

app ist das Verzeichnis Ihrer Anwendung, die Sie automatisch laden möchten.

Erzeugen von Vendor- und AutoLoad-Dateien

Öffnen Sie Ihr Terminal und geben Sie den folgenden Befehl ein, um AutoLoad-Dateien in Ihrem Projekt zu installieren.

$ composer dump-autoload -o

Dadurch wird das Verzeichnis vendor und die Datei autoload.php darin erzeugt.

Anwendungsfall

Sie müssen nur einmal die Datei autoload.php in Ihre index.php-Datei einfügen und schon kann es losgehen.

require_once('vendor/autoload.php');

Praktisches Beispiel

Wir gehen durch die praktische Anwendung der Einrichtung von PSR-4 Autoloading in Ihrem Projekt, Sie müssen mitmachen.

Die Grundlagen abwickeln

Legen wir ein neues Projekt an und erstellen ein App-Verzeichnis darin.

Erstellen Sie eine composer.json Datei und bereiten Sie sie für das automatische Laden von Dateien in Ihrem App-Verzeichnis vor. Sie sollten jetzt wissen, wie man das macht. Falls nicht, hier ist es

Lesen Sie auch: Wie man PHP-Arrays verwendet

"autoload": {
    "psr-4": {
        "App\\": "app/"
    }
},
  • Führen Sie composer dump-autoload aus, um das Verzeichnis vendor und die Datei autoload.php zu erzeugen.
$ composer dump-autoload -o
  • Erstellen wir zunächst ein paar Klassen im app-Verzeichnis
  • Erstellen Sie Settings.php innerhalb von app/Config

Lesen Sie auch: 5 Tipps, um ein besserer PHP-Entwickler zu werden

<?php
namespace App\Config;
class Setings {
   //TODO
}
  • Utils.php innerhalb von app/Helpers erstellen
<?php
namespace App\Helpers;
class Utils {
   //TODO
}
  • Erstellen Sie eine neue Datei bootstrap.php im app-Verzeichnis. So habe ich es gemacht. Sie können dies auch direkt in Ihrer index.php-Datei tun.
<?php
require __DIR__ .'/../vendor/autoload.php';
  • Erstellen Sie schließlich eine index.php-Datei, um sie zu testen.

 

Lesen Sie mehr: index.php aus Laravel entfernen

<?php
require 'app/bootstrap.php';
$config = new App\Config\Settings();
var_dump($config);

Sie sollten die zurückgegebene Objektklasse in Ihrem Terminal wie folgt sehen können:

object(App\Config\Settings)#3 (0) {
}

Lesen Sie mehr über Namespacing-Klassen in PHP.

Letzte Worte

Nun, das war's. Sie sind nun in der Lage, neue Klassen im Verzeichnis Ihrer Anwendung zu erstellen, indem Sie einfach vergessen, jede einzelne Datei jedes Mal einzubinden. Der Composer ist in der heutigen Welt wie ein Rettungsanker für all Ihre PHP-Anwendungen, also nutzen Sie ihn in vollem Umfang, solange Sie können.  

Wenn Sie Vorschläge oder Feedback haben, schreiben Sie es in das Kommentarfeld unten und lassen Sie es uns wissen. Sie können uns auch auf Twitter folgen.

Usama Muneer

Usama Muneer

A web enthusiastic, self-motivated & detail-oriented professional Full-Stack Web Developer from Karachi, Pakistan with experience in developing applications using JavaScript, WordPress & Laravel specifically. Loves to write on different web technologies with an equally useful skill to make some sense out of it.