Heim  >  Artikel  >  php教程  >  3 Möglichkeiten, Ihre eigene Klassenbibliothek in Laravel zu nutzen

3 Möglichkeiten, Ihre eigene Klassenbibliothek in Laravel zu nutzen

高洛峰
高洛峰Original
2016-12-27 11:34:521108Durchsuche

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().&#39;/commands&#39;,<br/>    app_path().&#39;/controllers&#39;,<br/>    app_path().&#39;/models&#39;,<br/>    app_path().&#39;/database/seeds&#39;,<br/>    app_path().&#39;/libaries/class&#39;, // 在这里增加<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().&#39;/libraries/function/helper.php&#39;;<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[&#39;app&#39;][&#39;path.base&#39;]}/app/libraries/function/helper.php" );<br/>});<br/></span>
Verwenden Sie die Funktion v('hello world') direkt im Projekt;

Hinzufügen eine etwas komplexere 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.

libraries
    Myapp
        Search (note directory is capitalized)
            Search.php
            SearchFacade.php
            SearchServiceProvider.php
        AnotherLib
Der 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 instanziieren

Zusammenfassung

Obwohl 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!

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