方法 A
メソッドを使用して内部でコントローラをインスタンス化し、次の形式を呼び出します: A('[project://][group/]module','controllerlayer name')
最も簡単な使用法:
は、現在のプロジェクトの UserAction コントローラーをインスタンス化することを意味します (このコントローラーに対応するファイルは、Lib/Action/UserAction.class にあります。) グループ モードが採用されており、別の Admin グループ コントローラーをインスタンス化したい場合は、次のようにすることができます。使用:
プロジェクト間のインスタンス化もサポートされています (プロジェクト ディレクトリは同じレベルに維持する必要があります)
Admin プロジェクトでの UserAction コントローラーのインスタンス化を表します
バージョン .1 では階層型コントローラのサポートが追加されているため、A メソッドを使用して他のコントローラをインスタンス化することもできます。
UserEvent コントローラーをインスタンス化します (対応するファイルは Lib/Event/UserEvent.class にあります)。
コントローラーをインスタンス化した後、コントローラー内のメソッドを呼び出すことができますが、プロジェクトをまたがって呼び出す場合、操作メソッドが現在のコントローラーに対して特殊な変数操作を持っている場合、不明な点がいくつかあることに注意してください。パブリック呼び出しを必要とするコントローラー層は、依存関係が多すぎないように個別に開発することをお勧めします。
方法 B
これは、動作とともに発生し、次のような特定の動作を実行できる新しい関数です。
> つまり、プロジェクトが開始される前に、この動作で定義されたすべての関数が実行されます。 2 つのパラメータをサポートします。2 番目のパラメータは、たとえば配列を受け入れる必要があります。
方法 C
方法 C は、Think が構成パラメーターを設定、取得、保存するために使用する方法であり、より頻繁に使用されます。
C メソッドを理解するには、まず Think の構成を理解する必要があります。これは、C メソッドのすべての操作が構成に関連しているためです。 Thinkの設定ファイルは配列形式で定義されています。
関数のオーバーロード設計のため、使用方法がたくさんありますが、一つずつ説明していきます。
パラメータを設定する
DB_NAME 設定パラメータの値が think に設定されていることを示します。設定パラメータでは大文字と小文字が区別されないため、次の記述方法は同じです。
ただし、構成定義の仕様書は大文字で統一することを推奨します。
プロジェクトのすべてのパラメータは、有効になる前にこのメソッドを通じて動的に変更できます。最後に設定された値は、従来の構成内の以前の設定または定義を上書きします。また、パラメータ構成メソッドを使用して、新しい構成を追加することもできます。
次のような二次構成パラメータの設定をサポートします。
レベル 2 を超えてパラメータを設定することはお勧めできません。
複数のパラメータを設定する場合は、次のようなバッチ設定を使用できます。
C($config);
C メソッドの最初のパラメータが配列に渡される場合、それはバッチ割り当てを意味します。上記の割り当ては次と同等です。
C('USER_TYPE',1);
パラメータを取得
します。 設定されたパラメータを取得するには、以下を使用できます。
USER_ID パラメータが定義されていない場合は、NULL が返されます。
また、次のような二次設定パラメータの取得もサポートできます。
受信設定パラメータが空の場合は、すべてのパラメータを取得することを意味します。
> 設定を保存
する バージョン .1 では、一括割り当て専用の設定パラメータを永続的に保存する機能が追加されました。例:
C($config,'name');
設定パラメータをバッチで設定した後、現在の設定パラメータはすべてキャッシュ ファイル (またはその他の設定されたキャッシュ方法) に保存されます。
保存後、保存したパラメータを取得したい場合は、 を使用できます。
このうち name は先ほどパラメータを保存する際に使用したキャッシュ識別子であり、保存されたパラメータを正しく取得するためには一貫性が必要です。取得されたパラメータは、手動でマージすることなく、現在の構成パラメータとマージされます。
D メソッド
D メソッドは、最も一般的に使用されるメソッドです。これは、カスタム モデル クラスのインスタンス化に使用されます。これは、Think フレームワークによるモデル クラスのインスタンス化のカプセル化であり、シングルトン モードを実装し、プロジェクト間およびグループ呼び出しをサポートします。 . の呼び出し形式は次の
ようになります。
D('[プロジェクト://][グループ/]モデル','モデルレイヤー名')
メソッドの戻り値は、インスタンス化されたモデル オブジェクトです。
D メソッドは、モデル クラスを自動的に検出できます。カスタム モデル クラスが存在する場合は、カスタム モデル クラスがインスタンス化されます。存在しない場合は、Model 基本クラスがインスタンス化されます。同時に、インスタンス化されたモデルはインスタンス化されません。繰り返しインスタンス化され、変更されます。
D メソッドの最も一般的な使用法は、現在のプロジェクトのカスタム モデルをインスタンス化することです。例:
$ユーザー = D('ユーザー');
現在のプロジェクトの下に Lib/Model/UserModel.class. ファイルをインポートし、UserModel クラスをインスタンス化するため、実際のコードは次と同等になる可能性があります。
$User = new UserModel();
ただし、D メソッドを使用する場合、UserModel クラスが存在しない場合は、自動的に呼び出されます。
また、2 回目に呼び出されたときに再度インスタンス化する必要がないため、オブジェクトのインスタンス化のオーバーヘッドをある程度削減できます。
D メソッドは、グループやプロジェクト全体でのモデルのインスタンス化をサポートできます。例:
// Admin グループの User モデルをインスタンス化します
D('管理者/ユーザー')
注: プロジェクト間呼び出しモデルを実装するには、2 つのプロジェクトのディレクトリ構造が並列していることを確認する必要があります。
バージョン .1 以降、階層モデルのサポートが追加されたため、D メソッドは次のような他のモデルもインスタンス化できます。
$ユーザー = D('ユーザー','サービス');
// UserLogic クラスをインスタンス化します
$User = D('ユーザー','ロジック');
Lib/Service/UserService.class. がインポートされてインスタンス化されます。これは次のコードと同等です。
$User = new UserService();
F メソッド
F メソッドは、実際には S メソッドのサブセットです。単純なデータ キャッシュにのみ使用され、ファイル形式のみをサポートします。キャッシュの有効期間はサポートされません。リターン メソッドを使用するため、効率は S メソッドよりも高くなります。 S 方式であるため、高速キャッシュ方式とも呼ばれます。
F メソッドの特徴は次のとおりです。
単純なデータ キャッシュ。
ファイルとして保存します。
データを返してキャッシュをロードします。
サブディレクトリのキャッシュと自動作成をサポートします。
キャッシュ削除と一括削除をサポートします。
書き込みおよび読み取りキャッシュ
デフォルトの保存開始パスは DATA_PATH です (この定数は、デフォルト構成では RUNTIME_PATH.'Data/' の下にあります)。これは、ファイル名 DATA_PATH.'data.' のキャッシュ ファイルが生成されることを意味します。
注: データの上書きや競合を避けるために、キャッシュ識別子が固有であることを確認してください。
次回キャッシュされたデータを読み取るときは、次を使用します。
たとえば、次のようなサブディレクトリに保存できます。
F('user/data'); // キャッシュの読み取り
DATA_PATH.'user/data.' キャッシュ ファイルが生成されます。user サブディレクトリが存在しない場合は、自動的に作成されます。たとえば、複数レベルのサブディレクトリもサポートできます。
キャッシュの開始ディレクトリを指定する必要がある場合は、次の方法を使用できます。
取得するときは、以下を使用する必要があります。
キャッシュを削除
します。 キャッシュの削除も非常に簡単です。
特にサブディレクトリ キャッシュのバッチ削除機能をサポートします。ユーザー サブディレクトリの下にあるすべてのキャッシュ データを削除したいとすると、次のように使用できます。
または、フィルタ条件を使用して削除します。例:
G メソッド
Thinkphp が長い間、debug_start、debug_end メソッド、さらには Debug クラスを通じて完了する必要がある機能が、バージョン 3.1 では単純な G メソッドに置き換えられました。これは素晴らしいアップグレードです。
G 法の機能には、マーキング位置と間隔統計の 2 つの機能があります。具体的な使用方法を見てみましょう。
場所をマーク
します。
G メソッドの最初の使用法は、位置をマークすることです。例:
> 現在位置が開始タグとしてマークされ、現在位置の実行時間が記録されることを示します。環境がサポートしている場合は、メモリ使用量も記録できます。 G メソッド マーカーはどこからでも呼び出すことができます。
実行時間の統計
位置をマークした後、G メソッドを再度呼び出して間隔統計を実行できます。例:
// ...その他のスニペット
G('終了');
// ...ここに他のコードがあるかもしれません
// 統計間隔を実行します
echo G('begin','end').'s';
G('begin','end') は、開始位置から終了位置までの実行時間をカウントすることを意味します (単位は秒)。開始位置はマークされた位置でなければなりません。この時点で終了位置がマークされていない場合は、現在の位置が自動的に終了タグとしてマークされ、出力結果は次のようになります。
デフォルトの統計精度は小数点以下 4 桁です。この統計精度が十分ではないと思われる場合は、次のように設定することもできます。
考えられる出力は次のようになります。
メモリオーバーヘッドの統計
環境がメモリ使用量統計をサポートしている場合は、G メソッドを使用して、間隔メモリ オーバーヘッド統計 (単位: kb) を実行することもできます。例:
3 番目のパラメータは、m を使用してメモリ オーバーヘッド統計を示します。出力結果は次のようになります。
同様に、終了タグがマークされていない場合は、最初に現在位置が自動的に終了タグとしてマークされます。
環境がメモリ統計をサポートしていない場合、このパラメータは無効であり、インターバル実行時間統計は引き続き実行されます。
debug_start と debug_end のことは忘れてください。シンプルさが一番大切ですよ~
I メソッド
Thinkphp の I メソッドはバージョン 3.1.3 の新機能です。以前の 3.* バージョンを使用している場合は、3.1 クイック スタート チュートリアル シリーズの変数部分を直接参照できます。
概要
ご覧のとおり、I メソッドは Thinkphp の多数の 1 文字関数の新しいメンバーです。その名前は英語の入力 (input) に由来しています。主にシステム入力変数をより便利かつ安全に取得するために使用されます。どこでも使用できます。 . 利用形式は以下の通り
です。
I('変数の種類.変数名',['デフォルト値'],['フィルタ方法'])
変数タイプとは、次のようなリクエスト メソッドまたは入力タイプを指します。
get GETパラメータを取得
post POSTパラメータを取得
param は、GET、POST、または PUT パラメータを取得するリクエストのタイプを自動的に決定します
リクエストは REQUEST パラメータを取得します
put は PUT パラメータを取得します
セッションは $_SESSION パラメータを取得します
Cookie は $_COOKIE パラメータを取得します
サーバーは $_SERVER パラメータを取得します
globals は $GLOBALS パラメータを取得します
注: 変数の型では大文字と小文字が区別されません。
変数名では大文字と小文字が厳密に区別されます。
デフォルト値とフィルタリング方法はどちらもオプションのパラメータです。
使い方
について
I メソッドの使用法を説明するために、GET 変数タイプを例に挙げてみましょう。
echo I('get.name'); // $_GET['name'] と同等
デフォルト値のサポート:
echo I('get.name',''); // $_GET['name'] が存在しない場合は、空の文字列を返します
メソッドを使用してフィルタリングします:
変数タイプ全体を直接取得することをサポートします。例:
同様に、post または他の入力タイプの変数を取得できます。例:
I('session.user_id',0); // $_SESSION['user_id'] を取得します 存在しない場合はデフォルトの 0 になります
I('cookie.'); // $_COOKIE 配列全体を取得
I('server.REQUEST_METHOD'); // $_SERVER['REQUEST_METHOD'] を取得
param 変数タイプは、現在のリクエスト タイプの自動決定をサポートする、フレームワーク固有の変数取得方法です。次に例を示します。
現在のリクエスト タイプが GET の場合は GET['id'] と同等、現在のリクエスト タイプが POST または PUT の場合は _POST['id'] または PUT パラメータ ID の取得と同等です。
また、param タイプの変数は、デジタル インデックスを使用して URL パラメータを取得することもできます (PATHINFO モード パラメータは、GET か POST かに関係なく有効である必要があります)。次に例を示します。
現在のアクセス URL アドレスはです。
そうすれば合格できます
echo I('param.2'); // 出力 06
echo I('param.3'); // 出力 01
実際、param 変数型の記述方法は次のように簡略化できます。
I('name'); // I('param.name')
可変フィルター
I メソッドを使用する場合、変数は実際に 2 つのフィルタを通過します。1 つ目はグローバル フィルタリングです。グローバル フィルタリングは、VAR_FILTERS パラメータを構成することによって実行されます。バージョン 3.1 以降では、VAR_FILTERS パラメータのフィルタリング メカニズムが変更されていることに注意してください。 array_walk_recursive メソッドを使用して再帰的フィルタリングを行う場合、フィルタリング メソッドの主な要件は参照によって返される必要があるため、ここでの htmlspecialchars の設定は無効です。メソッドは次のようにカスタマイズできます。
$value = htmlspecialchars($value);
}
次に、次のように設定します。
複数回フィルタリングする必要がある場合は、以下を使用できます。
filter_exp メソッドは、フレームワークに組み込まれたセキュリティ フィルタリング メソッドであり、モデルの EXP 関数を使用したインジェクション攻撃を防ぐために使用されます。
VAR_FILTERS パラメータはグローバル フィルタリング メカニズムを設定し、効率に影響を与える再帰的フィルタリングを使用するため、取得した変数を直接フィルタリングすることをお勧めします。フィルタリング方法は I メソッドの 3 番目のパラメータで設定するほかに、フィルタリングも設定できますDEFAULT_FILTER パラメータを設定します。実際、このパラメータのデフォルト設定は次のとおりです。
つまり、I メソッドのすべての取得変数は htmlspecialchars によってフィルタリングされ、次のようになります。
同様に、このパラメータは複数のフィルタもサポートできます。例:
I メソッドの使用時にフィルタリング メソッドを指定すると、DEFAULT_FILTER 設定は無視されます。例:
I メソッドの 3 番目のパラメーターが関数名で渡された場合、変数をフィルターするために関数が呼び出され、それが返されることを意味します (変数が配列の場合、フィルター処理には array_map が自動的に使用されます)。それ以外の場合は、組み込みfilter_var メソッドはフィルタリングのために呼び出されます。例:
$_POST['email'] の形式が検証されることを示し、要件を満たさない場合は空の文字列が返されます。
(その他の検証形式については、filter_var の使用に関する公式マニュアルを参照してください。)
または、次の文字識別を使用することもできます。
サポートされるフィルター名は、filter_list メソッドの有効な値である必要があります (サーバー環境が異なると異なる場合があります)。サポートされるフィルター名としては次のものが考えられます。
ブール値
浮き
ます。 validate_regexp
検証URL
validate_email
検証_ip
文字列
剥がされた
エンコード
された 特別な文字
安全でない_生
メール
で URL
数値_int
数値_浮動小数点
魔法の引用
コールバック
一部の特殊なケースでは、DEFAULT_FILTER が設定されている場合でも、フィルタリングを実行したくない場合があります。
フィルタリング パラメータが NULL に設定されると、フィルタリングは実行されなくなります。
L メソッド
L メソッドは、複数の言語が有効になっている場合に、現在の言語定義を設定および取得するために使用されます。
呼び出し形式:L('言語変数',['言語値'])
言語変数を設定
する
言語パッケージを使用して言語変数を定義するだけでなく、L メソッドを使用して言語変数を動的に設定することもできます。例:
言語定義では大文字と小文字が区別されないため、以下も同等です。
ただし、標準化のため、言語変数の定義には大文字を使用することをお勧めします。
L メソッドは、次のような言語変数のバッチ設定をサポートしています。
$lang['lang_var2'] = '言語定義 2';
$lang['lang_var3'] = '言語定義 3';
L($lang);
3 つの言語変数 lang_var1、lang_var2、lang_var3 が同時に設定されることを示します。
[-続き-]
言語変数を取得する
または:
パラメータが空の場合は、現在定義されているすべての言語変数 (言語定義ファイル内の変数を含む) を取得することを意味します。
> または、テンプレートで使用することもできます。
言語定義を出力します。
M メソッド
M メソッドは、基本モデル クラスのインスタンスを作成するために使用されます。D メソッドとの違いは次のとおりです。
モデルクラスをカスタマイズする必要がなく、IO 負荷が軽減され、パフォーマンスが向上します。
、インスタンス化後に呼び出せるのは、基本モデル クラス (デフォルトは Model クラス) のメソッドのみです。
、インスタンス化時にテーブルのプレフィックス、データベース、データベース接続情報を指定できます。
D メソッドの能力は、カプセル化するカスタム モデル クラスの強力さに反映されます。しかし、Think フレームワークの新しいバージョンの基本モデル クラスがますます強力になるにつれて、M メソッドはより実用的になってきています。 Dメソッド。
M メソッドの呼び出し形式:
M('[基本モデル名:]モデル名','データテーブルプレフィックス','データベース接続情報')
M メソッドの具体的な用途を見てみましょう。
, 基本モデル(Model)クラスをインスタンス化
します。
モデルが定義されていない場合は、次のメソッドを使用して、操作用のモデル クラスをインスタンス化できます。
$ユーザー = M('ユーザー');
//その他のデータ操作を実行します
$User->select();
この方法は、モデル クラスを定義する必要がなく、プロジェクト間の呼び出しをサポートするため、最も単純かつ効率的です。また、カスタム モデル クラスがないため、関連するビジネス ロジックを作成できず、基本的な CURD 操作のみを完了できるという欠点もあります。
実際、これは次と同等です。
think_user テーブルの操作を示します。 M メソッドも D メソッドと同様にシングルトン関数を持ち、複数回呼び出されても繰り返しインスタンス化されません。 M メソッドのモデル名パラメーターは、データ テーブルに変換されるときに自動的に小文字に変換されます。これは、Think のデータ テーブルの命名仕様がすべて小文字の形式であることを意味します。
、他のパブリックモデルクラスをインスタンス化
します。 最初のインスタンス化方法にはモデル クラス定義がないため、追加の論理メソッドをカプセル化するのは困難ですが、ほとんどの場合、いくつかの共通ロジックを拡張するだけで十分なため、次の方法を試すことができます。
使用法を変更することは、実際には以下と同等です。
システムのモデル クラスは自動的にロードできるため、インスタンス化前にクラス ライブラリを手動でインポートする必要はありません。モデル クラス CommonModel は Model を継承する必要があります。 CommonModel クラスでいくつかの共通の論理メソッドを定義できるため、データ テーブルごとに特定のモデル クラスを定義する必要がなくなります。プロジェクトに既に 100 を超えるデータ テーブルがある場合、そのほとんどは基本的なものです。CURD 操作の場合、一部のモデルのみがデータ テーブルを定義します。カプセル化する必要がある複雑なビジネス ロジックがあるため、最初の方法と 2 番目の方法を組み合わせるのが良い選択です。
、テーブルのプレフィックス、データベース、その他の情報を渡します
M メソッドには 3 つのパラメーターがあります。最初のパラメーターはモデル名 (基本的なモデル クラスとデータベースを含めることができます)、2 番目のパラメーターはデータ テーブルのプレフィックスを設定するために使用されます (テーブルのプレフィックスを取得するには空白のままにします) 3 番目のパラメータは、現在使用されているデータベース接続情報を設定するために使用されます (現在のプロジェクトで設定されているデータベース接続情報を取得するには空白のままにします)。例:
Model モデル クラスをインスタンス化し、db2 データベース内の think_user テーブルを操作することを示します。
2 番目のパラメータが空白のままか渡されない場合は、現在のプロジェクト設定でデータ テーブル プレフィックスを使用することを意味します。操作されているデータ テーブルにテーブル プレフィックスがない場合は、以下を使用できます。
Model モデル クラスのインスタンス化と、db1 データベース内のユーザー テーブルの操作を表します。
操作するデータベースに別のユーザー アカウントが必要な場合は、次のようにデータベース接続情報を渡すことができます。
Model は基本モデル クラスを表すために使用され、think_user テーブルが操作され、user_a アカウントがデータベースへの接続に使用され、操作データベースは think です。
3 番目の接続情報パラメーターは、DSN 構成またはアレイ構成を使用でき、構成パラメーターもサポートできます。
たとえば、プロジェクト設定ファイルで次のように設定します。
その後、以下を使用できます。
基本モデルのクラスとデータベースは、たとえば次のように一緒に使用できます。
階層モデルをインスタンス化したい場合は、パブリック モデル クラスを使用できます。
同じ機能を実現します。
R メソッド
R メソッドは、特定のコントローラーの操作メソッドを呼び出すために使用されます。これは、A メソッドをさらに拡張および補足するものです。方法Aの使用方法はこちらをご覧ください。
R メソッドの呼び出し形式:
R('[プロジェクト://][グループ/]モジュール/オペレーション','パラメーター','コントローラー層名')
たとえば、操作メソッドを次のように定義します。
パブリック関数の詳細($id){
M('ユーザー')->find($id);
を返します。 }
}
その後、R メソッドを介して他のコントローラーでこの操作メソッドを呼び出すことができます (通常、R メソッドはモジュール間の呼び出しに使用されます)。
ユーザー コントローラーの詳細メソッドが呼び出され (詳細メソッドはパブリック型である必要があります)、戻り値は ID 5 のユーザー データをクエリすることを示します。呼び出したい操作メソッドにパラメータがない場合は、2 番目のパラメータを空白のままにして直接使用できます。
また、グループ間およびプロジェクト間での通話もサポートできます。例:
Admin グループの下の User コントローラーの詳細メソッドを呼び出すことを示します。
Admin プロジェクトの下で User コントローラーの詳細メソッドを呼び出すことを示します。
公式の推奨事項は、論理的混乱を引き起こすため、同じレイヤー上であまりにも多くの呼び出しを行わないようにすることです。公的に呼び出される部分は、別個のインターフェイスにカプセル化する必要があります。3.1 マルチレイヤー コントローラーの新機能を使用して、別個のコントローラー層を追加できます。たとえば、インターフェース呼び出しの場合、Api コントローラー層を追加します。
パブリック関数の詳細($id){
M('ユーザー')->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 つのパラメータのみが有効で、残りは無効です
{ 'ファイル',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 が _ の場合、現在の module/Tpl/Public_menu.html を返します
T('パブリック/メニュー');
// TMPL_TEMPLATE_SUFFIX が .tpl の場合、現在の module/Tpl/Public/menu.tpl を返します
T('Admin@Public/menu');
// Admin/View/Public/menu.html に戻ります
T('Extend://Admin@Public/menu');
// Extend/Admin/View/Public/menu.html に戻ります (Extend ディレクトリは AUTOLOAD_NAMESPACE の設定によって異なります)
T 関数を表示メソッドで直接使用します。
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','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 アドレスは次のとおりです。
現在の URL が PATHINFO モードに設定されている場合、同じメソッドで生成される最終 URL は次のようになります: http://サーバー名 /index./Blog/read/id/1
現在の URL が REWRITE モードに設定されている場合、同じ方法で最終的に生成される URL アドレスは次のようになります: http://serverName/Blog/read /id /1
PATHINFO 区切り文字も設定した場合:
「URL_PATHINFO_DEPR」=>「_」
生成されます
現在の URL が REWRITE モードに設定され、擬似静的サフィックスが html に設定されている場合、同じメソッドで生成される最終的な URL アドレスは次のようになります。
複数の擬似静的サポートが設定されている場合、最初の擬似静的サフィックスが URL アドレスの末尾に自動的に追加されます。もちろん、U メソッドで生成される擬似静的サフィックスを手動で指定することもできます例:
U('ブログ/読み取り','id=1','xml')
生成されます
U メソッドはルーティングもサポートできます。ルーティング ルールを定義すると、次のようになります。
'news/:id\d'=>'ニュース/読む'
それでは使用できます
う('/news/1')
最終的に生成される URL アドレスは次のとおりです。
アプリケーションに複数のサブドメインの操作アドレスが含まれる場合は、U メソッドでアドレスを生成する必要があるドメイン名を指定することもできます。
@ の後に指定する必要があるドメイン名を渡すだけです。
さらに、U メソッドの 5 番目のパラメーターが true に設定されている場合、現在のドメイン名が自動的に認識され、現在のアドレスのサブドメイン名がサブドメイン名の展開設定 APP_SUB_DOMAIN_DEPLOY および APP_SUB_DOMAIN_RULES に基づいて自動的に生成されることを意味します。
URL_CASE_INSENSITIVE がオンの場合、小文字の URL アドレスが均一に生成されます。

データベースストレージセッションを使用することの主な利点には、持続性、スケーラビリティ、セキュリティが含まれます。 1。永続性:サーバーが再起動しても、セッションデータは変更されないままになります。 2。スケーラビリティ:分散システムに適用され、セッションデータが複数のサーバー間で同期されるようにします。 3。セキュリティ:データベースは、機密情報を保護するための暗号化されたストレージを提供します。

PHPでのカスタムセッション処理の実装は、SessionHandlerInterfaceインターフェイスを実装することで実行できます。具体的な手順には、次のものが含まれます。1)CussentsessionHandlerなどのSessionHandlerInterfaceを実装するクラスの作成。 2)セッションデータのライフサイクルとストレージ方法を定義するためのインターフェイス(オープン、クローズ、読み取り、書き込み、破壊、GCなど)の書き換え方法。 3)PHPスクリプトでカスタムセッションプロセッサを登録し、セッションを開始します。これにより、データをMySQLやRedisなどのメディアに保存して、パフォーマンス、セキュリティ、スケーラビリティを改善できます。

SessionIDは、ユーザーセッションのステータスを追跡するためにWebアプリケーションで使用されるメカニズムです。 1.ユーザーとサーバー間の複数のインタラクション中にユーザーのID情報を維持するために使用されるランダムに生成された文字列です。 2。サーバーは、ユーザーの複数のリクエストでこれらの要求を識別および関連付けるのに役立つCookieまたはURLパラメーターを介してクライアントに生成および送信します。 3.生成は通常、ランダムアルゴリズムを使用して、一意性と予測不可能性を確保します。 4.実際の開発では、Redisなどのメモリ内データベースを使用してセッションデータを保存してパフォーマンスとセキュリティを改善できます。

APIなどのステートレス環境でのセッションの管理は、JWTまたはCookieを使用して達成できます。 1。JWTは、無国籍とスケーラビリティに適していますが、ビッグデータに関してはサイズが大きいです。 2.cookiesはより伝統的で実装が簡単ですが、セキュリティを確保するために慎重に構成する必要があります。

セッション関連のXSS攻撃からアプリケーションを保護するには、次の測定が必要です。1。セッションCookieを保護するためにHTTPonlyとセキュアフラグを設定します。 2。すべてのユーザー入力のエクスポートコード。 3.コンテンツセキュリティポリシー(CSP)を実装して、スクリプトソースを制限します。これらのポリシーを通じて、セッション関連のXSS攻撃を効果的に保護し、ユーザーデータを確保できます。

PHPセッションのパフォーマンスを最適化する方法は次のとおりです。1。遅延セッション開始、2。データベースを使用してセッションを保存します。これらの戦略は、高い並行性環境でのアプリケーションの効率を大幅に改善できます。

thesession.gc_maxlifettinginttinginphpdethinesthelifsessessiondata、setinseconds.1)it'sconfiguredinphp.iniorviaini_set()。 2)AbalanceSneededToAvoidPerformanceIssues andunexpectedLogouts.3)php'sgarbagecollectionisisprobabilistic、影響を受けたBygc_probabi

PHPでは、session_name()関数を使用してセッション名を構成できます。特定の手順は次のとおりです。1。session_name()関数を使用して、session_name( "my_session")などのセッション名を設定します。 2。セッション名を設定した後、session_start()を呼び出してセッションを開始します。セッション名の構成は、複数のアプリケーション間のセッションデータの競合を回避し、セキュリティを強化することができますが、セッション名の一意性、セキュリティ、長さ、設定タイミングに注意してください。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

ドリームウィーバー CS6
ビジュアル Web 開発ツール

WebStorm Mac版
便利なJavaScript開発ツール

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)
