ホームページ  >  記事  >  バックエンド開発  >  Thinkphp 単一文字関数の使用ガイド、thinkphp 使用ガイド_PHP チュートリアル

Thinkphp 単一文字関数の使用ガイド、thinkphp 使用ガイド_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-12 08:53:40775ブラウズ

Thinkphp 一文字関数使用ガイド、thinkphp 使用ガイド

メソッド

メソッドを使用して内部でコントローラーをインスタンス化し、次の形式を呼び出します: A('[project://][group/]module','コントローラー層名')
最も簡単な使用法:

コードをコピーします コードは次のとおりです: $User = A('User');

は、現在のプロジェクトの UserAction コントローラーをインスタンス化することを意味します (このコントローラーに対応するファイルは Lib/Action/UserAction.class にあります。) グループ化モードが採用されており、別の Admin グループ化コントローラーをインスタンス化したい場合は、以下を使用できます。

コードをコピーします コードは次のとおりです: $User = A('Admin/User');

プロジェクト間のインスタンス化もサポートします (プロジェクト ディレクトリは同じレベルに維持する必要があります)

コードをコピーします コードは次のとおりです: $User = A('Admin://User');

Admin プロジェクトの下で UserAction コントローラーをインスタンス化することを示します
バージョン .1 では階層型コントローラーのサポートが追加されているため、A メソッドを使用して他のコントローラーをインスタンス化することもできます。例:

コードをコピーします コードは次のとおりです: $User = A('User','Event);

UserEvent コントローラーをインスタンス化します (対応するファイルは Lib/Event/UserEvent.class にあります)。
コントローラーをインスタンス化した後、コントローラー内のメソッドを呼び出すことができます。ただし、操作メソッドが現在のコントローラーに対して特殊な変数操作を持っている場合、一般的には不明な点がいくつかあることに注意してください。パブリック呼び出しを必要とするコントローラー層は、依存関係が多すぎないように個別に開発することをお勧めします。

方法B

これは動作とともに生まれ、次のような特定の動作を実行できる新しい関数です。

コードをコピーします コードは次のとおりです: B('app_begin'); つまり、プロジェクトが開始される前に、この動作で定義されたすべての関数が実行されます。 2 つのパラメーターをサポートします。2 番目のパラメーターは配列を受け入れる必要があります。たとえば

コードをコピーします コードは次のとおりです: B('app_begin',array("name"=>"tdweb","time"=>time()));

Cメソッド

方法 C は、Think が構成パラメーターを設定、取得、保存するために使用する方法であり、より頻繁に使用されます。

C メソッドを理解するには、まず Think の構成を理解する必要があります。これは、C メソッドのすべての操作が構成に関連しているためです。 Thinkの設定ファイルは配列形式で定義されています。
関数のオーバーロード設計のため、多くの使用法があります。一つずつ説明していきます。
パラメータを設定します

コードをコピーします コードは次のとおりです: C('DB_NAME','think'); DB_NAME 設定パラメータの値を設定することを示します。設定パラメータは大文字と小文字が区別されないため、次の記述方法は同じです:

コードをコピーします コードは次のとおりです: C('db_name','think'); ただし、構成定義の仕様書は大文字で統一することを推奨します。
プロジェクトのすべてのパラメータは、有効になる前にこの方法で動的に変更できます。また、パラメータ設定方法を使用して、新しい設定を追加することもできます。
次のような二次構成パラメータの設定をサポートします:

コードをコピーします コードは次のとおりです: C('USER.USER_ID',8); レベル 2 を超えてパラメータを設定することはお勧めできません。
複数のパラメータを設定したい場合は、次のようなバッチ設定を使用できます:

コードをコピーします コードは次のとおりです: $config['user_id'] = 1; $config['user_type'] = 1;
C($config);
C メソッドの最初のパラメーターが配列に渡される場合、上記の代入は次と同等です。

コードをコピーします コードは次のとおりです: C('USER_ID',1); C('USER_TYPE',1); パラメータを取得します
設定されたパラメータを取得するには、次を使用できます:

コードをコピーします コードは次のとおりです: $userId = C('USER_ID'); $userType = C('USER_TYPE'); USER_ID パラメータが定義されていない場合は、NULL が返されます。
次のような二次構成パラメータの取得もサポートできます:

コードをコピーします コードは次のとおりです: $userId = C('USER.USER_ID'); 受信した構成パラメーターが空の場合、すべてのパラメーターを取得することを意味します:

コードをコピーします コードは次のとおりです: $config = C(); 設定を保存する バージョン .1 では、バッチ割り当ての場合にのみ、設定パラメータを永続的に保存する機能が追加されています。例:

コードをコピーします コードは次のとおりです: $config['user_id'] = 1; $config['user_type'] = 1; C($config,'名前');
設定パラメータをバッチで設定した後、現在の設定パラメータはすべてキャッシュ ファイル (またはその他の設定されたキャッシュ方法) に保存されます。
保存後、保存したパラメータを取得したい場合は、
を使用できます

コードをコピーします コードは次のとおりです: $config = C('','name'); このうち、name は以前にパラメータを保存するときに使用したキャッシュ識別子であり、保存されたパラメータを正しく取得するには一貫性が必要です。取得されたパラメータは、手動でマージすることなく、現在の構成パラメータとマージされます。

Dメソッド

D メソッドは、カスタム モデル クラスをインスタンス化するために使用されます。これは、シングルトン モードを実装し、プロジェクト間およびグループ呼び出しもサポートします。形式は次のとおりです:
D('[プロジェクト://][グループ/]モデル','モデルレイヤー名')
メソッドの戻り値は、インスタンス化されたモデル オブジェクトです。
D メソッドは、モデル クラスを自動的に検出します。カスタム モデル クラスが存在する場合、そのカスタム モデル クラスはインスタンス化されます。同時に、インスタンス化されたモデルはインスタンス化されません。繰り返しインスタンス化されます。
D メソッドの最も一般的な使用法は、現在のプロジェクトのカスタム モデルをインスタンス化することです。例:

コードをコピーします コードは次のとおりです。:// User モデルをインスタンス化します
$ユーザー = D('ユーザー');
現在のプロジェクトの下に Lib/Model/UserModel.class ファイルをインポートし、UserModel クラスをインスタンス化するため、実際のコードは次と同等になる可能性があります:

コードをコピーします コードは次のとおりです: import('@.Model.UserModel');
$User = new UserModel();
ただし、Dメソッドを使用する場合、UserModelクラスが存在しない場合は、自動的に呼び出されます

コードをコピーします コードは次のとおりです: new Model('User');

2 回目の呼び出し時に再度インスタンス化する必要がないため、オブジェクトのインスタンス化のオーバーヘッドをある程度削減できます。
D メソッドは、グループやプロジェクト全体でのモデルのインスタンス化をサポートできます。例:

コードをコピーします コードは次のとおりです: // Admin プロジェクトの User モデルをインスタンス化します
D('管理者://ユーザー')
// Admin グループの User モデルをインスタンス化します
D('管理者/ユーザー')
注: プロジェクト間呼び出しモデルを実装するには、2 つのプロジェクトのディレクトリ構造が並列していることを確認する必要があります。
バージョン .1 以降、階層モデルのサポートが追加されたため、D メソッドは次のような他のモデルもインスタンス化できます。

コードをコピーします コードは次のとおりです。:// UserService クラスをインスタンス化します $ユーザー = D('ユーザー','サービス');
// UserLogic クラスをインスタンス化します
$ユーザー = D('ユーザー','ロジック');

コードをコピーします コードは次のとおりです: D('User','Service'); Lib/Service/UserService.class がインポートされてインスタンス化されます。これは次のコードと同等です:

コードをコピーします コードは次のとおりです: import('@.Service.UserService'); $User = 新しい UserService();

Fメソッド

F メソッドは実際には S メソッドのサブセットであり、単純なデータ キャッシュにのみ使用され、ファイル形式のみをサポートし、キャッシュの有効期間をサポートしません。リターン メソッドを使用するため、その効率は S メソッドよりも高くなります。したがって、高速キャッシュ方式とも呼ばれます。


F 法の特徴は次のとおりです:

シンプルなデータキャッシュ
ファイルとして保存します。 データを返してキャッシュをロードします
サブディレクトリのキャッシュと自動作成をサポートします。
キャッシュの削除とバッチ削除をサポートします。 書き込みおよび読み取りキャッシュ


コードをコピーします

コードは次のとおりです: F('data','test data'); デフォルトの保存開始パスは DATA_PATH です (この定数は、デフォルト設定では RUNTIME_PATH.'Data/' の下にあります)。これは、ファイル名 DATA_PATH.'data.' のキャッシュ ファイルが生成されることを意味します。 注: データの上書きや競合を避けるために、キャッシュ識別子が固有であることを確認してください。 次回キャッシュされたデータを読み取るときは、次を使用します:


コードをコピーします

コードは次のとおりです: $Data = F('data'); たとえば、次のようなサブディレクトリに保存できます。
コードをコピーします

コードは次のとおりです: F('user/data',$data) // キャッシュ書き込み; F('user/data') // キャッシュを読み取ります DATA_PATH.'user/data.' キャッシュ ファイルが生成されます。ユーザー サブディレクトリが存在しない場合は、次のような複数レベルのサブディレクトリもサポートされます。
コードをコピーします

コードは次のとおりです: F('level1/level2/data',$data);

キャッシュの開始ディレクトリを指定する必要がある場合は、次の方法を使用できます: コードをコピーします

コードは次のとおりです: F('data',$data,TEMP_PATH);

取得するときは、以下を使用する必要があります: コードをコピーします

コードは次のとおりです: F('data','',TEMP_PATH);

キャッシュを削除する キャッシュの削除も簡単です: を使用してください。
コードをコピーします

コードは次のとおりです: F('data',NULL); 2 番目のパラメーターとして NULL を渡すことは、データとして識別されたデータ キャッシュを削除することを意味します。

特にサブディレクトリキャッシュのバッチ削除機能をサポートします。ユーザーのサブディレクトリの下にあるすべてのキャッシュされたデータを削除したいとします。 を使用できます。 コードをコピーします

コードは次のとおりです: F('user/*',NULL);

または、フィルタ条件を使用して削除します。例:

コードをコピーします
コードは次のとおりです: F('user/[^a]*',NULL);

Gメソッド Thinkphp が長い間、debug_start、debug_end メソッド、さらには Debug クラスを通じて完了する必要があった関数は、バージョン 3.1 では単純な G メソッドに置き換えられました。これは素晴らしいアップグレードです。
G メソッドの機能には、位置のマーキングと間隔の統計の 2 つの機能が含まれています。具体的な使用法を見てみましょう。 場所をマークします

G メソッドの最初の使用法は、位置をマークすることです。例:

コードをコピーします コードは次のとおりです: G('begin');
現在位置が開始タグとしてマークされていることを示し、環境がサポートしている場合は、現在位置の実行時間も記録されます。 G メソッド マーカーはどこからでも呼び出すことができます。
実行時間の統計
位置をマークした後、G メソッドを再度呼び出して間隔統計を実行できます。例:

コードをコピーします コードは次のとおりです: G('begin');
// ...その他のスニペット
G('終わり');
// ...ここに他のコードがあるかもしれません
// 統計間隔を実行します
echo G('begin','end').';
G('begin','end') は、開始位置から終了位置までの実行時間をカウントすることを意味します (単位は秒)。この時点で終了位置がマークされていない場合は、開始位置をマークする必要があります。自動的に現在位置を終了タグとしてマークし、出力結果は次のようになります:

コードをコピーします コードは次のとおりです: 0.0056s
デフォルトの統計精度は小数点以下 4 桁です。この統計精度が十分ではないと思われる場合は、次のように設定することもできます。

コードをコピーします コードは次のとおりです: G('begin','end',6).'s'; 考えられる出力は次のようになります:

コードをコピーします コードは次のとおりです: 0.005587s メモリオーバーヘッドの統計
環境がメモリ使用量統計をサポートしている場合は、G メソッドを使用して、間隔メモリ オーバーヘッド統計 (単位: kb) を実行することもできます。例:

コードをコピーします コードは次のとおりです: echo G('begin','end','m').'kb'; 3 番目のパラメーターは m を使用してメモリ オーバーヘッド統計を表し、出力結果は次のようになります。

コードをコピーします コードは次のとおりです: 625kb 同様に、終了タグがマークされていない場合は、最初に現在位置が自動的に終了タグとしてマークされます。 環境がメモリ統計をサポートしていない場合、このパラメータは無効であり、インターバル実行時間統計は引き続き実行されます。
debug_start と debug_end のことは忘れてください。シンプルさが一番の近道ですよ~


Iメソッド


Thinkphp の I メソッドはバージョン 3.1.3 の新機能です。以前の 3.* バージョンを使用している場合は、3.1 クイック スタート チュートリアル シリーズの変数部分を直接参照できます。

概要

ご覧のとおり、I メソッドは Thinkphp の多数の単一文字関数の新しいメンバーであり、その名前は英語の入力 (input) に由来しており、主にシステム入力変数をより便利かつ安全に取得するために使用されます。使用形式は次のとおりです:
I('変数の種類.変数名',['デフォルト値'],['フィルタ方法'])
変数タイプは、次のようなリクエスト メソッドまたは入力タイプを指します。
get GETパラメータを取得します
post POSTパラメータを取得します
param は、GET、POST、または PUT パラメータを取得するリクエストのタイプを自動的に決定します
リクエストは REQUEST パラメータを取得します
put は PUT パラメータを取得します
セッションは $_SESSION パラメータを取得します
Cookie が $_COOKIE パラメータを取得します
サーバーは $_SERVER パラメーターを取得します
globals は $GLOBALS パラメータを取得します
注: 変数の型では大文字と小文字が区別されません。
変数名では大文字と小文字が厳密に区別されます。
デフォルト値とフィルタリング方法はどちらもオプションのパラメータです。
使い方
I メソッドの使用法を説明するために、GET 変数タイプを例に挙げてみましょう:

コードをコピーします コードは次のとおりです: echo I('get.id') // $_GET['id'] と同等です echo I('get.name') // $_GET['name'] と同等 サポートデフォルト値:

コードをコピー コードは次のとおりです: echo I('get.id',0); // $_GET['id'] が存在しない場合は、0 を返します echo I('get.name',''); // $_GET['name'] が存在しない場合は、空の文字列を返します 方法でフィルター:

コードをコピー コードは次のとおりです: echo I('get.name','','htmlspecialchars') // htmlspecialchars メソッドを使用して $_GET['name'] をフィルターし、空の文字を返します。存在しない場合は串 変数タイプ全体を直接取得することをサポートします。例:

コードをコピーします コードは次のとおりです: I('get.') // $_GET 配列全体を取得します; 同様に、post または他の入力タイプの変数を取得できます。例:

コードをコピー コードは次のとおりです: 1.I('post.name','','htmlspecialchars'); // htmlspecialchars メソッドを使用して $_POST['name'] をフィルターし、空を返します。存在しない場合は文字列 I('session.user_id',0); // $_SESSION['user_id'] を取得します 存在しない場合はデフォルトで 0 になります I('cookie.'); // $_COOKIE 配列全体を取得します
I('server.REQUEST_METHOD'); // $_SERVER['REQUEST_METHOD'] を取得します
param 変数タイプは、現在のリクエスト タイプの自動決定をサポートするフレームワーク固有の変数取得方法です。例:

コードをコピーします コードは次のとおりです: echo I('param.id'); 現在のリクエスト タイプが GET の場合、GET['id'] と同等です。現在のリクエスト タイプが POST または PUT の場合、_POST['id'] または PUT パラメータ ID の取得と同等です。 また、param 型変数は、デジタル インデックスを使用して URL パラメーターを取得することもできます (PATHINFO モード パラメーターは、GET か POST かに関係なく有効である必要があります)。例:
現在のアクセスURLアドレスは
です

コードをコピーします コードは次のとおりです: http://serverName/index./New/2013/06/01 そうすれば合格できます

コードをコピーします コードは次のとおりです: echo I('param.1') // 出力 2013
echo I('param.2'); // 06
を出力します。 echo I('param.3'); // 01
を出力します。 実際、param変数型の書き方は以下のように簡略化できます

コードをコピーします コードは次のとおりです: I('id') // I('param.id') と同等です
; I('name'); // I('param.name') と同等
変数フィルタリング
I メソッドを使用する場合、変数は実際に 2 つのフィルターを通過します。1 つ目は、VAR_FILTERS パラメーターを構成することによって行われます。バージョン 3.1 以降、VAR_FILTERS パラメーターのフィルター メカニズムが変更されたことに注意してください。 array_walk_recursive メソッドを使用した再帰フィルタリングの場合、フィルタリング メソッドの主な要件は参照によって返される必要があるため、ここで htmlspecialchars を設定することは無効です。たとえば、次のようにメソッドをカスタマイズできます。

コードをコピーします コードは次のとおりです: function filter_default(&$value){ $value = htmlspecialchars($value);
}
次に、次のように設定します:

コードをコピーします コードは次のとおりです: 'VAR_FILTERS'=>'filter_default' 複数回フィルタリングする必要がある場合は、以下を使用できます:

コードをコピーします コードは次のとおりです:'VAR_FILTERS'=>'filter_default,filter_exp' filter_exp メソッドは、フレームワークに組み込まれたセキュリティ フィルタリング メソッドであり、モデルの EXP 関数を使用したインジェクション攻撃を防ぐために使用されます。
VAR_FILTERS パラメータはグローバル フィルタリング メカニズムを設定し、効率に影響を与える再帰的フィルタリングを使用するため、I メソッドの 3 番目のパラメータでフィルタリング メソッドを設定するほかに、取得した変数を直接フィルタリングすることをお勧めします。 DEFAULT_FILTER パラメーターを構成することにより、実際、このパラメーターのデフォルト設定は次のとおりです。

コードをコピーします コードは次のとおりです: 'DEFAULT_FILTER' => 'htmlspecialchars' 言い換えると、I メソッドのすべての取得変数は htmlspecialchars によってフィルター処理され、次のようになります。

コードをコピーします

コードは次のとおりです: I('get.name') // htmlspecialchars($_GET['name']) と同等です 同様に、このパラメーターは複数のフィルターもサポートできます。例:

コードをコピーします

コードは次のとおりです: 'DEFAULT_FILTER' => 'strip_tags,htmlspecialchars'

コードをコピーします

コードは次のとおりです: I('get.name') // htmlspecialchars(strip_tags($_GET['name'])) と同等です I メソッドの使用時にフィルタリング メソッドを指定すると、DEFAULT_FILTER の設定は無視されます。例:

コードをコピーします

コードは次のとおりです: echo I('get.name','','strip_tags'); //strip_tags($_GET['name']) と同等です I メソッドの 3 番目のパラメーターが関数名で渡された場合、変数をフィルターするために関数が呼び出され、それが返されることを意味します (変数が配列の場合、フィルター処理には array_map が自動的に使用されます)。それ以外の場合は、組み込みfilter_var メソッドはフィルタリングのために呼び出されます。例:
コードをコピーします
コードは次のとおりです: I('post.email','',FILTER_VALIDATE_EMAIL); $_POST['email'] の形式が検証されることを示し、要件を満たさない場合は空の文字列が返されます。 (その他の検証形式については、公式マニュアルの filter_var の使用法を参照してください。) または、次の文字識別を使用することもできます:


コードをコピーします
コードは次のとおりです: I('post.email','','email'); サポートされるフィルター名は、filter_list メソッドで有効な値である必要があります (サーバー環境によっては、サポートされるフィルター名が異なる場合があります)。 コードをコピーします

コードは次のとおりです: int ブール値 フロート validate_regexp validate_url
validate_email
validate_ip
文字列
剥ぎ取られました
エンコードされました
特殊文字
安全でない_生
メール
URL
数値_int
数値_浮動小数点
魔法の引用
コールバック
一部の特殊なケースでは、DEFAULT_FILTER が設定されている場合でも、フィルタリングを実行したくない場合は、以下を使用できます:



コードをコピーします

コードは次のとおりです: I('get.name','',NULL); フィルタリング パラメータが NULL に設定されると、フィルタリングは実行されなくなります。
Lメソッド

L メソッドは、複数の言語が有効になっている場合に、現在の言語定義を設定および取得するために使用されます。
呼び出し形式: L('言語変数',['言語値'])
言語変数を設定する

言語パッケージを使用して言語変数を定義するだけでなく、L メソッドを使用して言語変数を動的に設定することもできます。例:




コードをコピーします

コードは次のとおりです: L('LANG_VAR','Language Definition'); 言語定義では大文字と小文字が区別されないため、以下も同等です:
コードをコピーします

コードは次のとおりです: L('lang_var','言語定義'); ただし、標準化のため、言語変数の定義には大文字を使用することをお勧めします。 L メソッドは、言語変数のバッチ設定をサポートしています。例:

コードをコピーします コードは次のとおりです: $lang['lang_var1'] = '言語定義 1';
$lang['lang_var2'] = '言語定義 2';
$lang['lang_var3'] = '言語定義 3';
L($lang);
3 つの言語変数 lang_var1、lang_var2、lang_var3 が同時に設定されることを示します。
[-続き-]
言語変数を取得する

コードをコピーします コードは次のとおりです: $langVar = L('LANG_VAR');
または:

コードをコピーします コードは次のとおりです: $langVar = L('lang_var');
パラメーターが空の場合は、現在定義されているすべての言語変数 (言語定義ファイル内の変数を含む) を取得することを意味します。

コードをコピーします コードは次のとおりです: $lang = L();
または、テンプレートで使用することもできます

コードをコピーします コードは次のとおりです: {$Think.lang.lang_var}
言語定義を出力します。

Mメソッド

M メソッドは、基本的なモデル クラスをインスタンス化するために使用されます。D メソッドとの違いは次のとおりです。 モデルクラスをカスタマイズする必要がなく、IO 負荷が軽減され、パフォーマンスが向上します。 、インスタンス化後に呼び出せるのは、基本モデル クラス (デフォルトは Model クラス) のメソッドのみです
、インスタンス化中にテーブルのプレフィックス、データベース、データベース接続情報を指定できます。 D メソッドの能力は、カプセル化するカスタム モデル クラスの強力さに反映されます。ただし、Think フレームワークの新しいバージョンの基本モデル クラスがますます強力になるにつれて、M メソッドはますます実用的になってきています。 Dメソッド。
M メソッド呼び出し形式:
M('[基本モデル名:]モデル名','データテーブルプレフィックス','データベース接続情報')
M メソッドの具体的な使用法を見てみましょう:
, 基本モデル(Model)クラスをインスタンス化します
モデルが定義されていない場合は、次のメソッドを使用して、操作用のモデル クラスをインスタンス化できます:


コードをコピーします

コードは次のとおりです://ユーザーモデルをインスタンス化します $ユーザー = M('ユーザー'); //その他のデータ操作を実行します $User->select();

この方法は、モデル クラスを定義する必要がなく、プロジェクト間の呼び出しをサポートするため、最も単純かつ効率的です。また、カスタム モデル クラスがないため、関連するビジネス ロジックを作成できず、基本的な CURD 操作のみを完了できるという欠点もあります。


コードをコピーします

コードは次のとおりです: $User = M('User'); 実際には次と同等です:

コードをコピーします

コードは次のとおりです: $User = new Model('User'); think_user テーブルの操作を示します。 M メソッドも D メソッドと同様にシングルトン関数を持ち、複数回呼び出されても繰り返しインスタンス化されません。 M メソッドのモデル名パラメーターは、データ テーブルに変換されるときに自動的に小文字に変換されます。これは、Think のデータ テーブルの命名仕様がすべて小文字の形式であることを意味します。 、他のパブリックモデルクラスをインスタンス化します 最初のインスタンス化方法にはモデル クラス定義がないため、いくつかの追加の論理メソッドをカプセル化するのは困難ですが、ほとんどの場合、いくつかの共通ロジックを拡張するだけで十分なため、次の方法を試すことができます。


コードをコピーします

コードは次のとおりです: $User = M('CommonModel:User'); 変更された使用法は実際には次と同等です:

コードをコピーします

コードは次のとおりです: $User = new CommonModel('User'); システムのモデルクラスは自動的にロードできるため、インスタンス化前にクラスライブラリを手動でインポートする必要はありません。モデル クラス CommonModel は Model を継承する必要があります。 CommonModel クラスでいくつかの共通の論理メソッドを定義できるため、プロジェクトに既に 100 を超えるデータ テーブルがある場合、そのほとんどは基本的なメソッドです。CURD 操作では、一部のモデルのみがこのメソッドを備えています。カプセル化する必要がある複雑なビジネス ロジックがあるため、最初の方法と 2 番目の方法を組み合わせるのが良い選択です。

、受信テーブルプレフィックス、データベースおよびその他の情報

M メソッドには 3 つのパラメーターがあります。最初のパラメーターはモデル名 (基本的なモデル クラスとデータベースを含めることができます)、2 番目のパラメーターはデータ テーブルのプレフィックスを設定するために使用されます (現在のプロジェクトのテーブル プレフィックスを取得する場合は空白のままにします)。構成)、3 番目のパラメーターは、データ テーブルのプレフィックスを設定するために使用されます。パラメーターは、現在使用されているデータベース接続情報を設定するために使用されます (現在のプロジェクト構成のデータベース接続情報を取得する場合は空白のままにします)。例:

コードをコピーします

コードは次のとおりです: $User = M('db2.User','think_'); Model モデル クラスをインスタンス化し、db2 データベース内の think_user テーブルを操作することを示します。 2 番目のパラメーターが空白のままか渡されない場合、現在のプロジェクト構成でデータ テーブル プレフィックスを使用することを意味します。操作されているデータ テーブルにテーブル プレフィックスがない場合は、次を使用できます。

コードをコピーします

コードは次のとおりです: $User = M('db1.User',null); Model モデル クラスをインスタンス化し、db1 データベース内のユーザー テーブルを操作することを示します。 操作するデータベースに別のユーザー アカウントが必要な場合は、次のようにデータベース接続情報を渡すことができます:

コードをコピーします コードは次のとおりです: $User = M('User','think_','mysql://user_a:1234@localhost:3306/think');
Model は基本モデル クラスを表すために使用され、think_user テーブルが操作され、user_a アカウントがデータベースへの接続に使用され、操作データベースは think です。
3 番目の接続情報パラメーターは、DSN 構成またはアレイ構成を使用でき、構成パラメーターもサポートできます。
たとえば、プロジェクト構成ファイルで構成されます:

コードをコピーします コードは次のとおりです:'DB_CONFIG'=>'mysql://user_a:1234@localhost:3306/think';
次に、次を使用できます:

コードをコピーします コードは次のとおりです: $User = M('User','think_','DB_CONFIG');
基本的なモデル クラスとデータベースは、次のように一緒に使用できます。

コードをコピーします コードは次のとおりです: $User = M('CommonModel:db2.User','think_');
階層モデルをインスタンス化したい場合は、パブリック モデル クラスを使用できます:

コードをコピーします コードは次のとおりです: M('UserLogic:User');
UserLogic をインスタンス化します。これにはあまり意味がありませんが、

を使用できるためです。

コードをコピーします コードは次のとおりです: D('User','Logic');
同じ機能を実現します。

Rメソッド

R メソッドは、A メソッドをさらに拡張および補足するもので、特定のコントローラーの操作メソッドを呼び出すために使用されます。方法Aの使用方法はこちらをご覧ください。
Rメソッド呼び出し形式:
R('[プロジェクト://][グループ/]モジュール/オペレーション','パラメーター','コントローラー層名')
たとえば、操作メソッドを次のように定義します:

コードをコピーします コードは次のとおりです: class UserAction extends Action {
パブリック関数の詳細($id){
Return M('User')->find($id);
}
}
その後、R メソッドを介して他のコントローラーでこの操作メソッドを呼び出すことができます (通常、R メソッドはモジュール間の呼び出しに使用されます)

コードをコピーします コードは次のとおりです: $data = R('User/detail',array('5'));
ユーザー コントローラーの詳細メソッドが呼び出され (詳細メソッドはパブリック型である必要があります)、戻り値は ID 5 のユーザー データをクエリすることを示します。呼び出したい操作メソッドにパラメータがない場合は、2 番目のパラメータを空白のままにして直接使用できます。

コードをコピーします コードは次のとおりです: $data = R('User/detail');
また、グループ間通話やプロジェクト間通話もサポートできます。例:

コードをコピーします コードは次のとおりです: R('Admin/User/detail',array('5'));
Admin グループの下の User コントローラーの詳細メソッドを呼び出すことを示します。

コードをコピーします コードは次のとおりです: R('Admin://User/detail',array('5'));
Admin プロジェクトの下で User コントローラーの詳細メソッドを呼び出すことを示します。
公式の推奨事項は、論理的な混乱を引き起こすため、同じレイヤー上であまりにも多くの呼び出しを行わないようにすることです。3.1 マルチレイヤー コントローラーの新機能を使用して、別のコントローラー レイヤーを追加できます。たとえば、インターフェース呼び出しの場合、Api コントローラー層を追加します

コードをコピーします コードは次のとおりです: class UserApi extends Action {
パブリック関数の詳細($id){
Return M('User')->find($id);
}
}

次に、R メソッド呼び出しを使用します

コードをコピーします コードは次のとおりです:
$data = R('ユーザー/詳細',array('5'),'Api');

言い換えると、R メソッドの 3 番目のパラメーターは、呼び出しのコントローラー層の指定をサポートしています。
同時に、R メソッドは、操作メソッドの呼び出し時に操作サフィックス設定 C ('ACTION_SUFFIX') をサポートできます。操作メソッドのサフィックスを設定した場合でも、R メソッドの呼び出しメソッドを変更する必要はありません。

Sメソッド

S メソッドは、現在のキャッシュ メソッドのキャッシュ パラメーターの受け渡しもサポートしています。例:
コードをコピーします コードは次のとおりです:
S('data',$Data,3600,'File',array('length'=>10,'temp'=>RUNTIME_PATH.'temp/'));

テスト後、この方法で使用した場合、最初の 3 つのパラメーターのみが有効で、残りは無効です
コードをコピーします コードは次のとおりです:
{ 'File',array('length'=>10,'temp'=>RUNTIME_PATH.'temp/')}

最終的にはこのように使用しました:
コードをコピーします コードは次のとおりです:
S('data1',$list,array('prefix'=>aaa','expire'=>'3600','temp'=>RUNTIME_PATH.'temp/1236'));

入手時:
コードをコピーします コードは次のとおりです:
$sdata = S('data1','',array('prefix'=>'aaa','temp'=>RUNTIME_PATH.'temp/1236'));

Tメソッド

テンプレート ファイルをより便利に出力するために、新しいバージョンでは、テンプレート ファイル名を生成する T 関数がカプセル化されています。
使用法:
T([Resource://][Module@][Theme/][Controller/]Operation,[View Hierarchy])
T 関数の戻り値は完全なテンプレート ファイル名であり、出力をレンダリングするための表示およびフェッチ メソッドで直接使用できます。
例:
コードをコピーします コードは次のとおりです:
T('パブリック/メニュー');
// 現在の module/View/Public/menu.html に戻ります
T('青/パブリック/メニュー');
// 現在の module/View/blue/Public/menu.html に戻ります
T('パブリック/メニュー','Tpl');
// 現在の module/Tpl/Public/menu.html に戻ります
T('パブリック/メニュー');
// TMPL_FILE_DEPR が _ の場合、現在のモジュールを返す/Tpl/Public_menu.html
T('パブリック/メニュー');
// TMPL_TEMPLATE_SUFFIX が .tpl の場合、現在の module/Tpl/Public/menu.tpl を返します
T('管理者@パブリック/メニュー');
// Admin/View/Public/menu.html に戻ります
T('Extend://Admin@Public/menu');
// Extend/Admin/View/Public/menu.html に戻ります (Extend ディレクトリは AUTOLOAD_NAMESPACE の設定によって異なります)

表示メソッドで T 関数を直接使用します:
コードをコピーします コードは次のとおりです:
//T関数を使ってテンプレートを出力します
$this->display(T('Admin@Public/menu'));

T 関数は、さまざまなビュー階層テンプレートを出力できます。

Uメソッド

U メソッドは、URL アドレスのアセンブリを完了するために使用されます。その特徴は、現在の URL モードと設定に基づいて、対応する URL アドレスを自動的に生成できることです。 U('アドレス','パラメータ','疑似静的','ジャンプするかどうか','表示ドメイン名');

URL アドレスを固定する代わりにテンプレートで U メソッドを使用する利点は、環境が変わったりパラメーター設定が変更されたりしても、テンプレート内のコードを変更する必要がないことです。


テンプレート内の呼び出し形式は {:U('address', 'parameter'...)} である必要があります


Uメソッドの使用例:


コードをコピーします コードは次のとおりです: U('User/add') // Userモジュールの追加操作アドレスを生成します


グループ通話もサポートできます:


コードをコピーします コードは次のとおりです: U('Home/User/add') // HomeグループのUserモジュールの追加操作アドレスを生成します


もちろん、現在のモジュールの呼び出しを示すために単に操作名を書くこともできます


コードをコピーします コードは次のとおりです: U('add') // 現在のアクセスモジュールの追加操作アドレスを生成します


グループ名、モジュール名、操作名に加えて、いくつかのパラメータを渡すこともできます:


コードをコピーします コードは次のとおりです: U('Blog/readid=1') // ブログモジュールの読み取り操作とID 1のURLアドレスを生成します


U メソッドの 2 番目のパラメーターは受信パラメーターをサポートし、配列と文字列の 2 つの定義メソッドをサポートします。最初のパラメーターで文字列パラメーターのみを定義できる場合、次のメソッドは同等です。


コードをコピーします コードは次のとおりです: U('ブログ/cate',array('cate_id'=>1,'status'=>1)) U('ブログ/カテゴリ','cate_id=1&status=1')
U('ブログ/catecate_id=1&status=1')



ただし、次の定義メソッドではパラメータを渡すことはできません:


コードをコピーします コードは次のとおりです: U('ブログ/cate/cate_id/1/status/1')


プロジェクトの異なる URL 設定に従って、同じ U メソッド呼び出しで異なる URL アドレス効果をインテリジェントに生成できます。例:


コードをコピーします コードは次のとおりです: U('ブログ/readid=1')


この定義は一例です。

現在の URL が通常モードに設定されている場合、最後に生成された URL アドレスは次のとおりです:



コードをコピーします コードは次のとおりです: http://サーバー名/index.m=ブログ&a=read&id=1


現在の URL が PATHINFO モードに設定されている場合、同じメソッドで生成される最終的な URL は次のようになります: http://serverName/index./Blog/read/id/1

現在の URL が REWRITE モードに設定されている場合、同じメソッドで生成される最終 URL は次のようになります: http://serverName/Blog/read/id/1

PATHINFO 区切り文字も設定する場合:


コードをコピーします コードは次のとおりです: 'URL_PATHINFO_DEPR'=>'_'


が生成されます


コードをコピーします コードは次のとおりです: http://サーバー名/Blog_read_id_1


現在の URL が REWRITE モードに設定され、擬似静的サフィックスが html に設定されている場合、同じ方法で最終的に生成される URL アドレスは次のようになります:


コードをコピーします コードは次のとおりです: http://サーバー名/ブログ/read/id/1.html


複数の擬似静的サポートが設定されている場合、最初の擬似静的サフィックスが URL アドレスの末尾に自動的に追加されます。もちろん、U メソッドで生成される擬似静的サフィックスを手動で指定することもできます。例:


コードをコピーします コードは次のとおりです: U('ブログ/読む','id=1','xml')


が生成されます

コードをコピーします コードは次のとおりです:
http://サーバー名/ブログ/read/id/1.xml

ルーティング ルールを次のように定義すると、U メソッドでもルーティングをサポートできます:

コードをコピーします コードは次のとおりです:
'news/:idd'=>'ニュース/読む'

それでは、ご利用いただけます

コードをコピーします コードは次のとおりです:
う('/ニュース/1')

最終的に生成される URL アドレスは次のとおりです:

コードをコピーします コードは次のとおりです:
http://サーバー名/index./news/1

アプリケーションに複数のサブドメインの操作アドレスが含まれる場合は、U メソッドでアドレスを生成する必要があるドメイン名を指定することもできます。例:

コードをコピーします コードは次のとおりです:
U('ブログ/read@blog.think.cn','id=1');

@ 指定する必要があるドメイン名を渡すだけです。
さらに、U メソッドの 5 番目のパラメーターが true に設定されている場合、現在のドメイン名が自動的に認識され、現在のアドレスのサブドメイン名がサブドメイン名の展開設定 APP_SUB_DOMAIN_DEPLOY および APP_SUB_DOMAIN_RULES に基づいて自動的に生成されることを意味します。
URL_CASE_INSENSITIVE がオンの場合、小文字の URL アドレスが均一に生成されます。

www.bkjia.com本当http://www.bkjia.com/PHPjc/1123784.html技術記事 Thinkphp 単一文字関数の使用ガイド、thinkphp 使用ガイド メソッド メソッドは、コントローラーを内部的にインスタンス化するために使用され、形式: A('[project://][group/]module','コントローラー層名') を呼び出します。 .

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。