ホームページ  >  記事  >  バックエンド開発  >  ThinkPHPのソースコード学習方法

ThinkPHPのソースコード学習方法

WBOY
WBOYオリジナル
2016-07-29 09:16:161127ブラウズ

私は PHP の初心者です。最近、ThinkPHP を使用してプロジェクトに取り組んでいます。より深く学びたいので、ThinkPHP のソース コードを勉強して、忘れがちな事柄を記録するためにメモを取りました。始めました。

公式ウェブサイトの説明:

Iメソッドは、ThinkPHPの多くの単一文字関数の新しいメンバーであり、その名前は英語のInput(入力)に由来しており、主にシステム入力変数をより便利かつ安全に取得するために使用されます。どこでも使用でき、使用形式は次のとおりです:

I('変数の型.変数名',['デフォルト値'],['フィルターメソッド'])

変数の型はリクエストを参照します。以下を含むメソッドまたは入力タイプ:

変数タイプ 意味
get GETパラメータを取得
post POSTパラメータを取得
param リクエストを自動的に決定するtype GET、POST、または PUT パラメータを取得
request REQUEST パラメータを取得
put PUT パラメータを取得
session $_SESSION パラメータを取得
cookie $_ クッキーをゲットPARAMETERS
server GET $ _SERVERパラメータ
globals $GLOBALSパラメータを取得

注: 変数の型では大文字と小文字が区別されません。
変数名では大文字と小文字が厳密に区別されます。
デフォルト値とフィルタリングメソッドはオプションのパラメータです。

正式なコードは次のとおりです。

function I($name,$default='',$filter=null,$datas=null) {
static $_PUT=null;//staticを定義してクラスメンバーを宣言するにはstaticを使用しますまたは、メソッドが静的である場合は、クラスをインスタンス化せずに直接アクセスできます。静的メンバーにはオブジェクトを介してアクセスできません (静的メソッドを除く)
if(strpos($name,'/')){ // 別の文字の文字列を検索するには修飾子 strpos() 関数を指定します 最初の文字を検索します文字列内の '/' の出現
list($name,$type) =explode('/',$name,2 );//explode(separator,string,limit) 関数の意味特定の文字に基づいて文字列を配列に展開します。limit は返される配列の数です
}elseif(C('VAR_AUTO_STRING')){ // デフォルトで文字列に強制されます // ThinkPHP の C メソッドを呼び出します
$type = 's';
}

//概要 この if の意味は、パラメーターに /
if(strpos($name,'.')) { //パラメーターのソースを指定します //含まれているかどうかを確認します。M List ($ Method, $ name) = Explode ('.', $ Name, 2); } Else {// デフォルトは自動的に判断されます
$ method = 'param' )) {
//strto lower()すべての文字を小文字に変換し、スイッチを使用してメソッドのタイプを見つけます


parse_str(file_get_contents('php://input'), $ _PUT);

switch($_SERVER['REQUEST_METHOD' ]) { //$_SERVER[' REQUEST_METHOD' 要求されたメソッド名を取得し、swith() を使用してメソッドの種類を特定します。ここでの考え方は再帰です
case 'POST': 「す」「す」 s ‐ ‐ ‐ ‐ Break; case 'PUT' :

)
case 'path' : $input = array(); if(!empty ($_SERVER['PATH_INFO'])){
$ depr = C('URL_PATHINFO_DEPR'); ブレーク;
ケース 'リクエスト' :
$input = & $_REQUEST; ケース 'セッション' : $input =& $_SESSION;
break; case ' cookie' :
$input =& $_COOKIE; case 'server' put =& $GLOBALS; break; case 'data ' :
$input =& $datas; Break;
デフォルト:
return null; }
if(''==$name) { // すべての変数を取得します
$data = $input;
$filters = isset($filter)?$filter:C('DEFAULT_FILTER'); // 使用する三眼鏡演算子isset() 関数は通常、変数が設定されているかどうかを検出するために使用され、empty() は変数が空かどうかを判断するために使用されます。 input[$name])) { // 値の演算 ; If ($ Filters) {
IF (IS_STRING ($ Filters)) {
IF (0 === Strpos ($ FILTERS, '/')) { if(1!== preg_match($ filters、(string)$ data){// {data = filter_var($ data、is_int($ filter)?$ filter:filter_id($ filter));
$data
=(array)$data;
$data; break;
case 'f':// 浮動小数点// ブール値
$data
=(boolean)$data;
break; data = (string)$data; } } }else { // 変数のデフォルト値 $data使用する 使用する 使用する - - - - からIメソッドは、主に前面から背面に渡される値を取得するために使用されます。他のものは変更できます。
上で赤くマークされているものは、コードを読むときに覚えておくべきいくつかの知識ポイントです。
機能: 入力で渡されるパラメータを安全に取得する実装アイデア:送信時に型に従っている場合、指定された型に従っていない場合は、その型に従って処理されます。サーバー変数に基づいて決定されます。
フィルタリングを通じて送信されたデータのセキュリティを確保します。 著作権声明: この記事はブロガーによるオリジナルの記事であり、ブロガーの許可なく複製することはできません。
以上、ThinkPHP のソースコードの学習方法をさまざまな側面を含めて紹介しましたが、PHP チュートリアルに興味のある友人の参考になれば幸いです。

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