Composer を使用すると、多くの既存のライブラリ (packagist.org 内のライブラリなど) を再利用できますが、それでも Composer と互換性のない一部のパッケージやライブラリを使用する場合があります。さらに、特定のプロジェクトでは、特定のクラス ライブラリを作成することもありますが、それをコンポーザー パッケージにするつもりはない場合もあります。現時点では、次の方法で独自のクラス ライブラリを使用できます。
直接インスタンス化できるクラスを追加します
プロジェクトで直接使用する必要がある一部のクラスは、次の方法でLaravelに追加できます
1. クラスライブラリファイルapp/libraries/class/myClass.phpを作成します
2.ファイルの内容を書き込みます
コードは次のとおりです:
クラスメッセージ{
パブリック静的関数の表示() {
}
}
?>
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
アナザーリブ
Myapp/Search/Search.php の Search クラスの名前空間は MyappSearch です。
コンポーザーで自動ロードを変更する
コードは次のとおりです:
「自動ロード」: {
「クラスマップ」: [
"アプリ/コマンド",
「アプリ/コントローラー」、
"アプリ/モデル",
「アプリ/ライブラリ」、
"アプリ/データベース/移行",
"アプリ/データベース/シード",
「app/tests/TestCase.php」
】
、
"psr-0": {
"Myapp": "アプリ/ライブラリ"
}
}、
プロジェクトで new MyappSearchSearch() を使用して、特定のクラスをインスタンス化します。
まとめ
Laravel はどの方法が最適であるかを強制しませんが、プロジェクトの構造を明確にし、複数の人が開発で協力する場合に通信コストを大幅に節約できる特定の基準があります。
http://www.bkjia.com/PHPjc/956407.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/956407.html技術記事 Laravelで自作クラスライブラリを使う3つの方法 この記事では主にLaravelで自作クラスライブラリを使う3つの方法を紹介し、直接インスタンス化できるクラスを追加する方法、add direct...
。