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, diese in ein Composer-Paket umzuwandeln. 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 im Folgenden zu Laravel hinzugefügt werden Möglichkeiten
1. Erstellen Sie die Klassenbibliotheksdatei app/libraries/class/myClass.php
Schreiben Sie den Dateiinhalt
<span style="font-size: 16px;"><?php<br/>class Message {<br/> public static function display() {<br/> }<br/>}<br/>?><br/></span>
Fügen Sie den Klassenimportpfad in app/start/globals.php hinzu
<span style="font-size: 16px;"><?php <br/>ClassLoader::addDirectories(array(<br/> app_path().'/commands',<br/> app_path().'/controllers',<br/> app_path().'/models',<br/> app_path().'/database/seeds',<br/> app_path().'/libaries/class', // 在这里增加<br/>));<br/>?><br/></span>
Fügen Sie das Autoload-Verzeichnis in Composer.json hinzu
<span style="font-size: 16px;">"autoload": {<br/> "classmap": [<br/> "app/commands",<br/> "app/controllers",<br/> "app/models",<br/> "app/database/migrations",<br/> "app/database/seeds",<br/> "app/tests/TestCase.php",<br/> "app/libraries/class" //在这里增加<br/> ]<br/>},<br/></span>
1. Führen Sie „composer dump-autoload“ aus, um die Importzuordnung zu erstellen
2. Verwenden Sie die von Ihnen importierte Klasse, um Message::display() direkt aufzurufen.
Diese Methode auch In Bezug auf die Warteschlangenklassenmethode wissen viele Menschen nicht, wo die Warteschlangenverarbeitungsklasse in Laravel platziert werden soll. Befolgen Sie tatsächlich die obige Methode, um ein Warteschlangenverzeichnis im App-Verzeichnis zu erstellen, und lassen Sie es dann direkt instanziieren 🎜>
Funktionen hinzufügen, die direkt aufgerufen werden können
Manche Leute verwenden gerne v() anstelle von var_dump(), und das ist sehr einfach Tun Sie dies in Laravel
1. Erstellen Sie eine Funktionsdatei app/libraries/function/helper.phpSchreiben Sie den Dateiinhalt
<span style="font-size: 16px;"><?php <br/>function v($msg){<br/> var_dump($msg);<br/>}<br/>?><br/></span>
Fügen Sie die Datei zu Composer hinzu, importieren Sie automatisch
<span style="font-size: 16px;">"autoload": {<br/> "classmap": [<br/> ...<br/> ],<br/> "files": [<br/> "app/libraries/function/helper.php"<br/> ],<br/>},<br/></span>
in die Liste oder zeigen Sie die erforderliche Datei im Projekt an. Öffnen Sie app/start/global.php und fügen Sie am Ende Folgendes hinzu:
<span style="font-size: 16px;">require app_path().'/libraries/function/helper.php';<br/></span>
Ich persönlich halte beide Methoden für in Ordnung. Wenn Sie die Ladezeit dieser Datei steuern möchten, Sie können sogar den folgenden Inhalt zur Datei filter.php hinzufügen
<span style="font-size: 16px;">App::before( function( $request ) {<br/> require( "{$GLOBALS['app']['path.base']}/app/libraries/function/helper.php" );<br/>});<br/></span>Verwenden Sie die Funktion v('hello world') direkt im Projekt;Hinzufügen eine etwas komplexere KlassenbibliothekManchmal 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.
libraries Myapp Search (note directory is capitalized) Search.php SearchFacade.php SearchServiceProvider.php AnotherLibDer Namespace der Search-Klasse in Myapp/Search/Search.php ist 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" } },Verwenden Sie die neue MyappSearchSearch() im Projekt, um eine bestimmte Klasse zu instanziierenZusammenfassungObwohl Laravel nicht erzwingt Welche Methode ist die beste, aber es gibt bestimmte Standards, die die Projektstruktur klar machen und eine Menge Kommunikationskosten sparen können, wenn mehrere Personen an der Entwicklung zusammenarbeiten. Weitere verwandte Artikel über 3 Möglichkeiten zur Nutzung Ihrer eigenen Klassenbibliothek in Laravel finden Sie auf der chinesischen PHP-Website!