Composer を使用すると、多くの既存のライブラリ (packagist.org 内のライブラリなど) を再利用できますが、それでも Composer と互換性のない一部のパッケージやライブラリを使用する場合があります。また、特定のプロジェクトでは、特定のクラス ライブラリを作成することもありますが、それをコンポーザー パッケージにするつもりはない場合もあります。現時点では、次の方法で独自のクラス ライブラリを使用できます。
直接インスタンス化できるクラスを追加します
プロジェクトで直接使用する必要がある一部のクラスは、次の方法でLaravelに追加できます
1. クラスライブラリファイルapp/libraries/を作成します。 class/myClass .php
2. ファイルの内容を書き込みます
<span style="font-size: 16px;"><?php<br/>class Message {<br/> public static function display() {<br/> }<br/>}<br/>?><br/></span>
app/start/globals.phpにクラスのインポートパスを追加します
<span style="font-size: 16px;"><?php <br/>ClassLoader::addDirectories(array(<br/> app_path().'/commands',<br/> app_path().'/controllers',<br/> app_path().'/models',<br/> app_path().'/database/seeds',<br/> app_path().'/libaries/class', // 在这里增加<br/>));<br/>?><br/></span>
composer.jsonにautoloadディレクトリを追加します
<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.インポートマッピングを作成するには、composer dump -autoload を実行します
2. インポートしたクラスを使用して、Message::display() を直接呼び出します
このメソッドもキュークラスを追加する方法です。 Laravel のキュー処理クラスを配置する必要があります。実際には、上記の方法に従ってアプリ ディレクトリにキュー ディレクトリを作成し、それを直接インスタンス化できるようにします
直接呼び出し可能な関数を追加します
var_dump () の代わりに v() を使用するには、Laravel でこれを行うのが非常に簡単です
1. 関数ファイル app/libraries/function/helper.php
を作成します
<span style="font-size: 16px;"><?php <br/>function v($msg){<br/> var_dump($msg);<br/>}<br/>?><br/></span>
ファイルをコンポーザーに自動的に追加します リスト
<span style="font-size: 16px;">"autoload": {<br/> "classmap": [<br/> ...<br/> ],<br/> "files": [<br/> "app/libraries/function/helper.php"<br/> ],<br/>},<br/></span>
をインポートするか、プロジェクトにこのファイルが必要であることを表示します。 app/start/global.php を開いて次を追加します:
<span style="font-size: 16px;">require app_path().'/libraries/function/helper.php';<br/></span>
個人的には、どちらの方法でも問題ありません。このファイルの読み込み時間を制御したい場合は、filter.php ファイルに次の内容を追加することもできます
。<span style="font-size: 16px;">App::before( function( $request ) {<br/> require( "{$GLOBALS['app']['path.base']}/app/libraries/function/helper.php" );<br/>});<br/></span>
関数 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 サイトに注目してください。