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

高洛峰
リリース: 2016-12-27 11:34:52
オリジナル
1105 人が閲覧しました

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().&#39;/commands&#39;,<br/>    app_path().&#39;/controllers&#39;,<br/>    app_path().&#39;/models&#39;,<br/>    app_path().&#39;/database/seeds&#39;,<br/>    app_path().&#39;/libaries/class&#39;, // 在这里增加<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().&#39;/libraries/function/helper.php&#39;;<br/></span>
ログイン後にコピー

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

<span style="font-size: 16px;">App::before( function( $request ) {<br/>    require( "{$GLOBALS[&#39;app&#39;][&#39;path.base&#39;]}/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 サイトに注目してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!