Laravelで独自のクラスライブラリを使用する3つの方法、laravelクラスライブラリ
Composer を使用すると、多くの既存のライブラリ (packagist.org 内のライブラリなど) を再利用できますが、それでも Composer と互換性のない一部のパッケージやライブラリを使用する場合があります。さらに、特定のプロジェクトでは、特定のクラス ライブラリを作成することもありますが、それをコンポーザー パッケージにするつもりはない場合もあります。現時点では、次の方法で独自のクラス ライブラリを使用できます。
直接インスタンス化できるクラスを追加します
プロジェクトで直接使用する必要がある一部のクラスは、次の方法でLaravelに追加できます
1. クラスライブラリファイルapp/libraries/class/myClass.phpを作成します
2.ファイルの内容を書き込みます
コードをコピーします コードは次のとおりです:
クラスメッセージ{
パブリック静的関数 display() {
}
}
?>
app/start/globals.phpにクラスインポートパスを追加します
コードをコピーします コードは次のとおりです:
ClassLoader::addDirectories(array(
app_path().'/commands',
app_path().'/controllers',
app_path().'/models',
app_path().'/database/seeds',
App_path().'/libaries/class', // ここに
を追加します
));
?>
composer.jsonにautoloadディレクトリを追加します
コードをコピーします コードは次のとおりです:
「自動ロード」: {
「クラスマップ」: [
「アプリ/コマンド」、
「アプリ/コントローラー」、
「アプリ/モデル」、
「アプリ/データベース/移行」、
「アプリ/データベース/シード」、
“app/tests/TestCase.php”,
"app/libraries/class" //ここに追加します
】
}、
1.composer dump-autoloadを実行してインポートマッピングを作成します
2. インポートしたクラスを使用して、Message::display() を直接呼び出します
この方法は、キュークラスを追加する方法でもありますが、実際には、上記の方法に従って、キュー処理クラスをアプリディレクトリに作成し、許可します。直接インスタンス化されます
直接呼び出せる関数を追加
var_dump() の代わりに v() を使用することを好む人もいます
これを Laravel で行うのも非常に簡単です。
1. 関数ファイルapp/libraries/function/helper.phpを作成します
2.ファイルの内容を書き込みます
コードをコピーします コードは次のとおりです:
関数 v($msg){
var_dump($msg);
}
?>
コンポーザーの自動インポートリストにファイルを追加します
コードをコピーします コードは次のとおりです:
「自動ロード」: {
「クラスマップ」: [
...
]、
「ファイル」: [
「app/libraries/function/helper.php」
]、
}、
または、プロジェクトにこのファイルが必要であることを表示します。 app/start/global.php を開き、最後に
を追加します。
コードをコピーします コードは次のとおりです:
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 の標準ディレクトリ構造を作成します。
コードをコピーします コードは次のとおりです:
図書館
マイアプリ
検索 (メモディレクトリは大文字)
Search.php
SearchFacade.php
SearchServiceProvider.php
AnotherLib
Myapp/Search/Search.php の Search クラスの名前空間は MyappSearch です。
コンポーザーで自動ロードを変更する
コードをコピーします コードは次のとおりです:
「自動ロード」: {
「クラスマップ」: [
「アプリ/コマンド」、
「アプリ/コントローラー」、
「アプリ/モデル」、
「アプリ/ライブラリ」、
「アプリ/データベース/移行」、
"アプリ/データベース/シード",
「app/tests/TestCase.php」
]
、
"psr-0": {
"Myapp": "アプリ/ライブラリ"
}
}、
プロジェクトで new MyappSearchSearch() を使用して特定のクラスをインスタンス化します
概要
Laravel はどの方法が最適であるかを強制しませんが、プロジェクトの構造を明確にし、複数の人が開発で協力する場合に通信コストを大幅に節約できる特定の基準があります。
http://www.bkjia.com/PHPjc/955970.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/955970.html技術記事 Laravel で独自のクラス ライブラリを作成する 3 つの方法、laravel クラス ライブラリ Composer を使用すると、多くの既存のクラス ライブラリ (packagist.org にあるものなど) を再利用できますが、それでも...