ホームページ  >  記事  >  バックエンド開発  >  Laravel で自作のクラス ライブラリを使用する 3 つの方法

Laravel で自作のクラス ライブラリを使用する 3 つの方法

小云云
小云云オリジナル
2018-02-26 11:23:321600ブラウズ

この記事ではLaravelで自作クラスライブラリを使う3つの方法を中心に紹介します この記事では直接インスタンス化できるクラスを追加する方法、直接呼び出せる関数を追加する方法、少し複雑なクラスライブラリを追加する方法の3つを解説します。必要としているお友達は参考にしていただければ幸いです。

Composer を使用すると、多くの既存のライブラリ (packagist.org にあるものなど) を再利用できますが、それでも Composer と互換性のない一部のパッケージやライブラリを使用する場合があります。さらに、特定のプロジェクトでは、特定のクラス ライブラリを作成することもありますが、それをコンポーザー パッケージにするつもりはない場合もあります。現時点では、次の方法で独自のクラス ライブラリを使用できます。

直接インスタンス化できるクラスを追加します

プロジェクトで直接使用する必要がある一部のクラスは、次の方法でLaravelに追加できます

1. クラスライブラリファイルapp/libraries/class/myClassを作成します。 php
2 .ファイルの内容を書き込みます

< ?php class Message {     public static function display() {
    } } ?>

app/start/globals.phpにクラスインポートパスを追加します

< ?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;, 
    // 在这里增加
)); ?>

composer.jsonにautoloadディレクトリを追加します

"autoload": {
    "classmap": [
        "app/commands",
        "app/controllers",
        "app/models",
        "app/database/migrations",
        "app/database/seeds",
        "app/tests/TestCase.php",
        "app/libraries/class"   //在这里增加
    ]
},

1.composer dump-autoloadを実行してインポートマッピングを作成します。
2.使用方法 インポートしたクラス上で Message::display() を直接呼び出すだけです

この方法も、Laravel でキュー処理クラスをどこに配置すればよいのかわからない人が多いです。実際、上記の方法に従って、アプリディレクトリに queues ディレクトリを作成し、それを直接インスタンス化させます

直接呼び出せる関数を追加します

var_dump() の代わりに v() を使用することを好む人もいます。 Laravel でこれを行うのはとても簡単です

1. 関数ファイルを作成します app/libraries/function/helper.php

2. ファイルの内容を書き込みます

< ?php 
 function v($msg){
     var_dump($msg);
 }
 ?>

Composer 自動インポートリストにファイルを追加します

"autoload": {
   "classmap": [
       ...
   ],
   "files": [
       "app/libraries/function/helper.php"
   ],
},

または表示するには、プロジェクト内にこのファイルが必要です。 app/start/global.php を開いて次を追加します:

require app_path().&#39;/libraries/function/helper.php&#39;;

個人的には、どちらの方法でも問題ありません。このファイルの読み込み時間を制御したい場合は、filter.php ファイルに次の内容を追加することもできます

App::before( function( $request ) 
{     require( "{$GLOBALS[&#39;app&#39;]
[&#39;path.base&#39;]
}
/app/libraries/function/helper.php" ); });

。関数 v('hello world') をプロジェクト内で直接使用します。

もう少し複雑なクラス ライブラリを追加します

クラス ライブラリはファイルほど単純ではない場合があるため、次の方法は複数の用途に適しています。ファイル 複数の構造用のクラス ライブラリ。

psr0 または psr4 の標準ディレクトリ構造を作成します。


コードをコピーします コードは次のとおりです:

libraries
     Myapp
         Search (note directory is capitalized)
             Search.php
             SearchFacade.php
             SearchServiceProvider.php
         AnotherLib

Myapp/Search/Search.php の Search クラスの名前空間は MyappSearch です。

コンポーザーでオートロードを変更する

"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"
     }
 },

プロジェクトで new MyappSearchSearch() を使用して特定のクラスをインスタンス化する

概要

Laravel はどのメソッドが最適であるかを強制しませんが、プロジェクト構造を作成できる特定の標準があります明確であり、複数人で開発に協力する場合に通信コストを大幅に節約できます。

以上がLaravel で自作のクラス ライブラリを使用する 3 つの方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。