この記事では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().'/commands', app_path().'/controllers', app_path().'/models', app_path().'/database/seeds', app_path().'/libaries/class', // 在这里增加 )); ?>
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().'/libraries/function/helper.php';
個人的には、どちらの方法でも問題ありません。このファイルの読み込み時間を制御したい場合は、filter.php ファイルに次の内容を追加することもできます
App::before( function( $request ) { require( "{$GLOBALS['app'] ['path.base'] } /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 サイトの他の関連記事を参照してください。