Dieser Artikel stellt Ihnen hauptsächlich die drei Methoden zur Verwendung selbst geschriebener Klassenbibliotheken in Laravel vor. In diesem Artikel werden die drei Methoden zum Hinzufügen von Klassen, die direkt instanziiert werden können, zum Hinzufügen von Funktionen, die direkt aufgerufen werden können, und zum Hinzufügen von leicht komplexen Klassen erläutert Freunde müssen darauf verweisen, ich hoffe, es kann allen helfen.
Obwohl Composer es uns ermöglicht, viele vorhandene Bibliotheken wiederzuverwenden (z. B. die in packagist.org), verwenden wir möglicherweise immer noch einige Pakete oder Bibliotheken, die nicht mit Composer kompatibel sind. Darüber hinaus erstellen wir in einem bestimmten Projekt möglicherweise auch eine bestimmte Klassenbibliothek und beabsichtigen möglicherweise nicht, daraus ein Composer-Paket zu machen. Derzeit können wir unsere eigene einzigartige Klassenbibliothek auf folgende Weise verwenden.
Klassen hinzufügen, die direkt instanziiert werden können
Einige Klassen, die direkt im Projekt verwendet werden müssen, können auf folgende Weise zu Laravel hinzugefügt werden
1 .Erstellen Sie die Klassenbibliotheksdatei app/libraries/class/myClass.php
2. Schreiben Sie den Dateiinhalt
< ?php class Message { public static function display() { } } ?>
Fügen Sie den Klassenimportpfad in app/start/globals.php hinzu
< ?php ClassLoader::addDirectories(array( app_path().'/commands', app_path().'/controllers', app_path().'/models', app_path().'/database/seeds', app_path().'/libaries/class', // 在这里增加 )); ?>
Fügen Sie das Autoload-Verzeichnis in Composer.json hinzu
"autoload": { "classmap": [ "app/commands", "app/controllers", "app/models", "app/database/migrations", "app/database/seeds", "app/tests/TestCase.php", "app/libraries/class" //在这里增加 ] },
1. Führen Sie „composer dump-autoload“ aus, um die Importzuordnung zu erstellen
2. Verwenden Sie Ihre eigene importierte Klasse, um Message direkt aufzurufen ::display() Das ist
Diese Methode ist auch eine Möglichkeit, eine Warteschlangenklasse hinzuzufügen. Viele Leute wissen nicht, wo die Warteschlangenverarbeitungsklasse in Laravel platziert werden soll. Erstellen Sie ein Warteschlangenverzeichnis im App-Verzeichnis und lassen Sie es dann direkt instanziieren
Direkt aufrufbare Funktionen hinzufügen
Manche Leute verwenden gerne v() anstelle von var_dump () und möchte dies in Laravel tun. Es ist auch sehr einfach
1. Erstellen Sie eine Funktionsdatei app/libraries/function/helper.php
2. Schreiben Sie den Dateiinhalt
< ?php function v($msg){ var_dump($msg); } ?>
Fügen Sie die Datei zur automatischen Importliste des Composers in
"autoload": { "classmap": [ ... ], "files": [ "app/libraries/function/helper.php" ], },
hinzu oder zeigen Sie diese Datei im Projekt an. Öffnen Sie app/start/global.php und fügen Sie am Ende hinzu:
require app_path().'/libraries/function/helper.php';
Ich persönlich halte beide Methoden für in Ordnung. Wenn Sie die Ladezeit dieser Datei steuern möchten, können Sie dies sogar tun füge es in filter.php hinzu. Füge den folgenden Inhalt zur Datei hinzu
App::before( function( $request ) { require( "{$GLOBALS['app'] ['path.base'] } /app/libraries/function/helper.php" ); });
Verwende die Funktion v('hello world') direkt im Projekt;
Füge etwas mehr hinzu komplexe Klassenbibliothek
Manchmal ist eine Klassenbibliothek mehr als nur eine Datei, daher eignet sich die folgende Methode besser für Klassenbibliotheken mit mehreren Dateien und mehreren Strukturen.
Erstellen Sie eine psr0- oder psr4-Standardverzeichnisstruktur.
Code kopieren Der Code lautet wie folgt:
libraries Myapp Search (note directory is capitalized) Search.php SearchFacade.php SearchServiceProvider.php AnotherLib
Der Namespace der Search-Klasse in Myapp/Search/Search.php lautet MyappSearch.
Autoload im Composer ändern
"autoload": { "classmap": [ "app/commands", "app/controllers", "app/models", "app/libraries", "app/database/migrations", "app/database/seeds", "app/tests/TestCase.php" ] , "psr-0": { "Myapp": "app/libraries" } },
Neue MyappSearchSearch() im Projekt verwenden, um eine bestimmte Klasse zu instanziieren
Zusammenfassung
Obwohl Laravel nicht vorschreibt, welche Methode die beste ist, gibt es bestimmte Standards, die die Projektstruktur klar machen und eine Menge Kommunikationskosten sparen können, wenn mehrere Personen an der Entwicklung zusammenarbeiten.
Das obige ist der detaillierte Inhalt von3 Möglichkeiten, selbst geschriebene Klassenbibliotheken in Laravel zu verwenden. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!