thinkphp では、クラス ライブラリのインポートのカプセル化を実装するためにインポート メソッドが使用されます。プロジェクト クラス ライブラリ、拡張クラス ライブラリ、サードパーティのクラス ライブラリのインポート サポートを提供できます。構文は "import('クラス ライブラリ名', '開始パス', 'クラス ライブラリ サフィックス')"; このメソッドには、サードパーティのクラス ライブラリをインポートするために特別に使用されるエイリアス ベンダー メソッドがあります。
この記事の動作環境: Windows 10 システム、ThinkPHP バージョン 3.2、Dell G3 コンピューター。
インポート メソッドは、クラス ライブラリのインポート、特にプロジェクト クラス ライブラリ、拡張クラス ライブラリ、および拡張クラス ライブラリのインポート サポートのための ThinkPHP フレームワークのカプセル化実装です。サードパーティのクラス ライブラリ 、インポート メソッドの初期バージョンでは、Java インポート メソッドと同様にディレクトリとワイルドカード インポートをインポートできましたが、その後、パフォーマンスの問題を考慮して、その後のバージョン更新で継続的に改善および簡素化が行われたため、現在の使用法は比較的シンプルであり、クリア。呼び出し形式:
import('类库名', '起始路径', '类库后缀')
imprt メソッドには、サードパーティのクラス ライブラリをインポートするために特別に使用されるエイリアス ベンダー メソッドがあります。違いは、開始パスとクラス ライブラリ サフィックスのデフォルト値が異なることです。
具体的な使用法を分析しましょう:
1. システム基本クラス ライブラリをインポートします
システム基本クラス ライブラリは、実際には Think クラス ライブラリを参照します。パッケージが配置されているディレクトリは、フレームワークのコア Lib ディレクトリを参照します。import メソッドを使用して、システムの基本クラス ライブラリをインポートできます。例:
import('Think.Util.Array');
は、Lib/Util/Array をインポートすることを意味します。システム ディレクトリの下にある class.php クラス ライブラリ ファイル。これは、マルチレベル ディレクトリをサポートするために
require THINK_PATH.'Lib/Util/Array.class.php';
を使用するのと同じです。例:
import('Think.Util.U1.ClassA'); import('Think.Util.U1.A2.ClassB');
インポートを通じてクラス ライブラリをインポートした後メソッドを使用すると、クラス ライブラリをインスタンス化できます。
2. 拡張クラス ライブラリをインポートします。
拡張クラス ライブラリは、システムのパブリック拡張クラス ライブラリ ディレクトリである Extend/Library ディレクトリの下にあります。現在サポートされている拡張クラス ライブラリ パッケージは ORG および Com パッケージのみです。
import('ORG.Util.Image'); import('Com.Sina.OAuth');
は、拡張ディレクトリの下にサードパーティのクラス ライブラリをインポートします (それぞれ Extend/Library/ORG/Util/Image.class.php および Extend/Library/Com/Sina/OAuth.class.php クラス ライブラリ)ファイル )、サードパーティのクラス ライブラリ パッケージは ORG と Com のみをサポートします。次のサブディレクトリは自由に追加できます。
3. プロジェクト アプリケーション クラス ライブラリのインポート
開始インポート パスが指定されていない場合は、Think、ORG、Com 以外のクラス ライブラリ パッケージがインポートされたとみなされます。プロジェクト アプリケーション クラス ライブラリ (例:
import("MyApp.Action.UserAction"); import("MyApp.Model.InfoModel");
は、MyApp プロジェクトの UserAction および InfoModel クラス ライブラリ ファイルをインポートすることを意味します。通常、クラス ライブラリは現在のプロジェクトの下にインポートされるため、次のように省略できます:
import("@.Action.UserAction"); import("@.Model.InfoModel");
@ 記号は、現在のプロジェクト配下のクラス ライブラリをインポートすることを意味します。この方法により、プロジェクトのクラス ライブラリのコード移植もある程度容易になります。プロジェクト名が変更されたり、別のプロジェクトに移動した場合、書き込みメソッドは変更する必要はありません。
4. 非標準クラス ライブラリ ファイルのインポート
ここで説明する非標準クラス ライブラリ ファイルとは、主に特別な場所にあるファイル、または .class 以外のファイルを指します。 .php 接尾辞 クラス ライブラリ ファイル。基本クラス ライブラリ、拡張クラス ライブラリ、およびプロジェクト クラス ライブラリのインポートはすべて、フレームワーク仕様のディレクトリに基づいています。プロジェクトの Common ディレクトリに MyClass.php ファイルをインポートする必要がある場合は、次を使用できます:
import('Common.MyClass',APP_PATH,'.php');
または
import('MyClass',APP_PATH.'Common','.php');
または、RBAC クラス ライブラリを現在のディレクトリにインポートしたい場合
import("RBAC.AccessDecisionManager",dirname(__FILE__),".php");
別の特殊なケースがあり、それはクラス ライブラリの名前付けの特殊性です。システムの規則に従って、インポート メソッドは、ドットが直接スラッシュに変換されるため、ドットを含むクラス ライブラリ ファイルをインポートできません。たとえば、User.Info.class.php という名前のファイルを定義する場合、次のように使用します。 ##
import("ORG.User.Info");
import("ORG.User#Info");
5. サードパーティのクラス ライブラリのインポート
ThinkPHP の基本クラス ライブラリにはすべて .class.php という接尾辞が付けられています。これはシステムの組み込み規則です。もちろん、インポート パラメーターを通じて制御することもできます。他のフレームワークやシステムからクラス ライブラリを導入しやすくするために、システムは、サードパーティ クラスのインポートに特別に使用されるインポート メソッドのエイリアス ベンダーも提供します。ライブラリ、デフォルトの開始ディレクトリとクラス ファイルのサフィックスは異なります。サードパーティのクラス ライブラリは、システム拡張ディレクトリの下の Vendor ディレクトリにあります。たとえば、Zend の Filter\Dir.php を Vendor ディレクトリに置きます。このとき、Dir ファイルのパスは Vendor\Zend\Filter になります。 \Dir.php. ベンダーを使用します メソッドのインポートには、Vendor('Zend.Filter.Dir');
Vendor('Zend.Filter.Dir',dirname(__FILE__),'.class.php');
6)。エイリアス インポート
例外 ネームスペース インポート メソッドに加えて、インポート メソッドはエイリアス インポートもサポートできます。エイリアス インポートを使用するには、まずエイリアスを定義する必要があります。プロジェクト構成ディレクトリの下に alias.php を追加して、クラス ライブラリを定義できますプロジェクトで使用する必要があるエイリアス、例:return array( 'rbac' =>LIB_PATH.'Common/Rbac.class.php', 'page' =>LIB_PATH.'Common/Page.class.php', );
import("rbac"); import("page");
一部の必要なクラス ライブラリのエイリアスを定義できるため、自動ロード パスを定義しなくても、それらのクラス ライブラリを自動的に迅速にロードできます。
一般に、フレームワーク内で自動ロード方式が採用されているため、ほとんどの場合、ユーザーがクラス ライブラリ ファイルを手動でインポートする必要はありません。通常、拡張クラス ライブラリやサードパーティ クラス ライブラリをインポートするために使用されます。さらに、エイリアス定義と自動ロードパスの定義により、ユーザーがクラスライブラリを手動でインポートする必要性も軽減できます。
推奨学習: 「PHP ビデオ チュートリアル 」
以上がthinkphpでのimportの使用法は何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。