ThinkPHPのimportメソッドの例の詳細

4774 ワード

importメソッドはThinkPHPフレームワークのクラスライブラリインポートのためのパッケージ実装であり、特にプロジェクトクラスライブラリ、拡張クラスライブラリ、サードパーティクラスライブラリのインポートサポートでは、importメソッドの初期バージョンはjavaのimportメソッドと同様にディレクトリとワイルドカードインポートをインポートすることができ、その後、パフォーマンスの問題を考慮して、後続のバージョン更新で絶えず改善され、簡略化された.だから今の使い方は簡単明瞭です.呼び出しフォーマット:
import('クラスライブラリ名','開始パス','クラスライブラリ接尾辞')
imprtメソッドには、開始パスとクラスライブラリ接尾辞のデフォルト値が異なる点で、サードパーティクラスライブラリのインポートに特化した別名vendorメソッドがあります.
具体的な使い方を分析します.
1.システムベースクラスライブラリのインポート
システムベースクラスライブラリとは、フレームワークのコアLibディレクトリを指すThinkクラスライブラリパッケージです.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');


importメソッドでクラスライブラリをインポートすると、クラスライブラリのインスタンス化操作ができます.
2.拡張クラスライブラリのインポート
拡張クラスライブラリはExtend/Libraryディレクトリの下にあります.これはシステムの共通拡張クラスライブラリディレクトリです.現在サポートされている拡張クラスライブラリパッケージはORGとComパッケージのみです.

import('ORG.Util.Image');
import('Com.Sina.OAuth');


拡張ディレクトリの下にあるサードパーティクラスライブラリ(Extend/Library/ORG/Util/Imge.class.phpとExtend/Library/Com/sina/OAuth.class.phpクラスライブラリファイル)がインポートされます.サードパーティクラスライブラリパッケージはORGとComの2種類しかサポートされていません.次のサブディレクトリは任意に追加できます.
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");


クラスライブラリの名前の特殊性もあります.システムのルールでは、importメソッドでは、ドット番号を持つクラスライブラリファイルをインポートできません.ドット番号は直接斜線に変換されるためです.たとえば、User.Info.class.phpというファイルを定義すると、次のようになります.

import("ORG.User.Info");


ロードするとエラーが発生し、ロードされたファイルはORG/User.Info.class.phpファイルではなく、ORG/User/Info.class.phpファイルです.この場合、次のように使用できます.

import("ORG.User#Info");


に表示されます.
5.サードパーティクラスライブラリのインポート
ThinkPHPのベースクラスライブラリは.class.phpを接尾辞としています.これはシステムに組み込まれた約束です.もちろん、importのパラメータで制御することもできます.他のフレームワークやシステムのクラスライブラリの導入をより容易にするために、サードパーティクラスライブラリのインポートに特化したimportメソッドの別名vendorも提供されています.デフォルトのホームディレクトリとクラスファイル接尾辞には違いがあります.サードパーティクラスライブラリは、システム拡張ディレクトリの下にあるVendorディレクトリです.たとえば、ZendのFilterDir.phpをVendorディレクトリの下に置きます.このとき、DirファイルのパスはVendorZendFilterDir.phpです.vendorメソッドを使用してインポートするには、次のようにします.

Vendor('Zend.Filter.Dir');


Dirクラスライブラリをインポートできます.Vendorメソッドでは、importメソッドと同様のベースパスとファイル名の接尾辞パラメータもサポートできます.たとえば、次のようになります.

Vendor('Zend.Filter.Dir',dirname(__FILE__),'.class.php');


6.別名インポート
ネーミングスペースのインポート方法に加えて、importメソッドでは別名インポートもサポートできます.別名インポートを使用するには、まず別名を定義します.プロジェクト構成ディレクトリの下にalias.phpを追加して、プロジェクトで使用するクラスライブラリの別名を定義できます.たとえば、次のようにします.

return array(
  'rbac' =>LIB_PATH.'Common/Rbac.class.php',
  'page' =>LIB_PATH.'Common/Page.class.php',
 );


では、今すぐ使用できます.

import("rbac");
import("page");


RbacクラスとPageクラスをインポートし、別名インポート方式はimportメソッドの2番目と3番目のパラメータの使用を禁止し、別名インポート方式の効率はネーミングスペースインポート方式よりも効率的であり、欠点は関連する別名を事前に定義する必要があることである.必要なクラスライブラリに別名を定義すると、自動ロードパスを定義する必要がなく、迅速な自動ロードが可能になります.
一般的に、フレーム内では自動ロード方式が採用されているため、ユーザーが手動でクラスライブラリファイルをインポートする必要がなく、拡張クラスライブラリやサードパーティクラスライブラリをインポートする場合が多い.また、別名定義と自動ロードパスの定義を組み合わせることで、ユーザーがクラスライブラリを手動でインポートする場合を減らすことができます.