Heim >Backend-Entwicklung >PHP-Tutorial >3 Möglichkeiten, selbst geschriebene Klassenbibliotheken in Laravel zu verwenden

3 Möglichkeiten, selbst geschriebene Klassenbibliotheken in Laravel zu verwenden

小云云
小云云Original
2018-02-26 11:23:321671Durchsuche

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().&#39;/commands&#39;,     
    app_path().&#39;/controllers&#39;,     
    app_path().&#39;/models&#39;,     
    app_path().&#39;/database/seeds&#39;,     
    app_path().&#39;/libaries/class&#39;, 
    // 在这里增加
)); ?>

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().&#39;/libraries/function/helper.php&#39;;


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[&#39;app&#39;]
[&#39;path.base&#39;]
}
/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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn