tpにおけるM,D,C,A,I,S法

9500 ワード

tpに触れ始めたばかりで、中の大文字の仕方がよくわかりません.今はずっとはっきりしている.
Dメソッドは、モデルクラスをインスタンス化する場合、ある特定のモデルクラスをインスタンス化するのが一般的であるが、データテーブルに対して基本的なCURD操作を行うだけであれば、Mメソッドを用いることができる.特定のモデルクラスをロードしないので、より性能が良い.Dメソッドが定義モデルクラスを見つけなければ、自動的にMメソッドが呼び出される.
Mメソッド##
//  M     
$User = M('User');
//   $User = new \Think\Model ('User');  
//         
$User->select();

Mメソッドは、崩壊ライブラリの操作もサポートする.
//  M     ,  db_name  ot_user 
$User = M('db_name.User','ot_');
//          
$User->select();

MメソッドのパラメータはThinkModelのパラメータと同じなので、次のように操作できます.
$New = M('new','think_',$connection);
//   $New = new  \Think\Model('new','think_',$connection);

Mメソッドをインスタンス化するとき.デフォルトは直接インスタンス化ThinkModelクラスです.他の共通モデルクラスをインスタンス化する場合は、次の操作を行います.
$User = M('\Home\Model\CommonModel:User','think_','db_config');
   $User = new \Home\Model\CommonModel('User','think_','db_config');

インスタンス化ベースモデルクラス(Model)は、モデルが定義されていない場合、以下の操作を用いることができる.この方法は簡単で効率的であるが、欠点はカスタムモデルクラスがなく、関連するビジネスロジックを書き込むことができないことである.基本的なCURD操作しかできない.モデルクラスに独自のビジネスロジックがある場合は、Mメソッドは使用できません.
//   User  
$User = new Model('User');
//    M()       ,          
$User = M('User');
//         
$User->select();

他のモデルクラスをインスタンス化
  • 第1種はモデルクラスの定義がないため、いくつかの追加の論理方法をカプセル化することが難しい.いくつかの一般的な論理を拡張する必要がある場合、次の方法
  • を試してみてください.
    $User = new CommonModel('User');
    
  • モデルの実例化方法は、3つのパラメータがある、1つ目のパラメータはモデル名、2つ目のパラメータはデータテーブルの接頭辞(空にすると現在のプロジェクト構成のテーブル接頭辞)、3つ目のパラメータは現在使用するデータベース接続情報(空にすると現在のプロジェクト構成のデータベース接続情報)を設定する.
  • $User = new CommonModel('User','think_','db_config');
    
  • 第3の使用M方法
  •  $User = M('CommonModel:User','think_','db_config');
    

    Mメソッドのデフォルトはモデルクラスのインスタンス化です
    Dメソッド##
     select();
    

    HomeModelUserModelが存在しない場合は、共通モデルの下にあるCommonModelUserModelクラスをインスタンス化してみます.Dメソッドのパラメータがインスタンスの名前である.モデルクラスの大文字と小文字の定義と一致する.
    パラメータ
    インスタンス化されたモデルファイル(現在のモジュールがホームであると仮定)
    User
    対応するモデルクラスファイルのHomeModelUserModel.class.php
    UserType
    対応するモデルクラスファイルのHomeModelUserTypeModel.class.php
    Liunxでは大文字と小文字に注意
    Dメソッドは、モデルクラスを自動的に検出し、カスタムモデルクラスが存在する場合はカスタムモデルクラスをインスタンス化し、存在しない場合はシステムのThinkModelベースクラスをインスタンス化し、インスタンス化されたモデルについてはインスタンス化を繰り返すことはありません.
    //D          ,    
    //   Admin User  
    D('Admin/User');
    //   Extend        Info  
    D('Extend://Editor/Info'):
    

    注意:モジュール間でモデルクラスをインスタンス化する場合、共通モジュールを自動的にロードするモデルクラスはサポートされません.
    C方法##
    プロファイルを定義後、システムが提供するCメソッドを使用して既存の構成額を読み取ることができる.
  • 設定パラメータ値を取得:C('パラメータ名')
  • $model = C('URL_MODEL');//      =url_model
    

    but大文字は比較的規範的である.注意:構成パラメータ名に「.」は含まれません.および特殊文字URL_MODELに設定がない場合はNULLを返す.
    //   3.2.1    ,       .such as
    C('my_config','null','default_config');
    //  my_config      ,   default_config
    

    Cメソッドueは、2 D構成を読み込むために使用できます.
    //              
    C('USER_CONFIG.USER_TYPE');
    

    構成パラメータはグローバルに有効であるため、Cメソッドは、設定パラメータが有効期限切れになっても、任意の場所で構成を読み込むことができます.
    A方法##
    コントローラ間呼び出しが必要な場合は、単独でインスタンス化できます.
    //   Home   User   
    $User = new \Home\Controller\UserController();
    //   Admin   blog   
    $Blog = new \Admin\Controller\BlogController();
    

    上のコードは多いのではないでしょうか.ここでは、ショートカット呼び出し方法Aを簡略化して以下のようにします.
    //       Home  
    $User = A('User');
    $Blog = A('Admin/Blog');
    

    デフォルトでは、Aメソッドはデフォルトコントローラ(Controller)をインスタンス化しています.他の階層コントローラをインスタンス化する場合は、
    //       Home
    //   Event   
    $User  = A('User');//    new \Home\Event\UserEvent();
    $Blog  = A('Admin/Blog','Event');//    new \Admin\Event\BlogEvent();
    

    Iメソッド##
    Web開発の過程で、私たちはよくシステム変数やユーザーが提出したデータを取得します.これらのデータの処理が悪いとセキュリティ上の危険性を引き起こすため、tpは変数取得機能を提供してくれた.まず、従来の取得方法を見てみましょう.
    $id = $_GET['id']; //   get  
    $name = $_POST['name']; //   post  
    $value = $_SESSION['var']; //   session  
    $name = $_COOKIE['name']; //   cookie  
    $file = $_SERVER['PHP_SELF']; //   server  
    

    従来の取得方法には統一的なセキュリティメカニズムがなく,後期調整が面倒であり,フレームワークでI関数を統一的に用いて変数の取得とフィルタリングを行うことがより好ましい.IメソッドはThinkPHPがシステム入力変数をより便利かつ安全に取得するために使用され、どこでも使用可能であり、使用方法のフォーマットは以下の通りである.
    I('    .   /   ',['   '],['       '],['     '])
    

    変数タイプとは、要求方式または入力タイプです.
    変数のタイプ
    意味
    get
    GETパラメータの取得
    post
    POSTパラメータの取得
    param
    自動判定要求タイプ取得GET、POSTまたはPUTパラメータ
    request
    REQUESTパラメータの取得
    put
    PUTパラメータの取得
    session
    $_を取得SESSIONパラメータ
    cookie
    $_を取得COOKIEパラメータ
    server
    $_を取得SERVERパラメータ
    globals
    $GLOBALSパラメータの取得
    path
    PATHINFOモードのURLパラメータを取得する
    data
    他のタイプのパラメータを取得するには、追加のデータソースパラメータを組み合わせる必要があります.
    注意:変数タイプは大文字と小文字を区別せず、変数名は大文字と小文字を厳格に区別します.デフォルト値とフィルタ方法は、オプションのパラメータです.Iメソッドの使用例を次に示します.
    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']        
    

    フィルタリング方法:
    //   htmlspecialchars   $_GET['name']     ,            
    echo I('get.name','','htmlspecialchars');
    

    変数値全体の直接取得をサポート
    //     $_GET   
    I('get.');
    

    同様にpostまたは他の入力タイプの変数を取得できます
    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タイプはI関数がデフォルトで取得した変数タイプであるため、実際にはparam変数タイプの書き方を簡略化することができる.
    I('id'); 
    //     I('param.id')
    I('name'); 
    //     I('param.name')
    

    pathタイプ変数は、例えば、現在のアクセスURLアドレスがhttp://serverName/index.php/New/2013/06/01
    echo I('path.1');
     //   2013
    echo I('path.2');
     //   06
    echo I('path.3');
     //   01
    

    Dataタイプ変数は、サポートされていない変数タイプの読み取りを取得するために使用できます.たとえば、次のようにします.
    I('data.file1','','',$_FILES);
    

    変数フィルタI関数を呼び出すときにフィルタ方法を指定しないと、デフォルトのフィルタメカニズム(DEFAULT_FILTERで構成されています)が採用されます.実際には、このパラメータのデフォルト設定は次のとおりです.
    //            
    'DEFAULT_FILTER' => 'htmlspecialchars'
    

    すなわち,Iメソッドのすべての取得変数は,フィルタリングメソッドが設定されていなければhtmlspecialcharsフィルタリングを行う.
    //     htmlspecialchars($_GET['name'])
    I('get.name');
    

    同様に、このパラメータは、次のような複数のフィルタをサポートするように設定することもできます.
    'DEFAULT_FILTER' => 'strip_tags,htmlspecialchars'
    

    設定後、次の操作を行います.
    //     htmlspecialchars(strip_tags($_GET['name']))
    I('get.name');
    

    Iメソッドを使用するときにフィルタリングメソッドを指定した場合、DEFAULT_は無視されます.FILTERの設定:
    //     strip_tags($_GET['name'])
    echo I('get.name','','strip_tags');
    

    Iメソッドの3番目のパラメータは、関数名が入力された場合、その関数を呼び出して変数をフィルタして返す(変数が配列の場合はarray_mapを自動的に使用してフィルタ処理を行う)ことを示します.そうしないと、PHP内蔵filter_varメソッドがフィルタ処理に呼び出されます.たとえば、次のようになります.
    I('post.email','',FILTER_VALIDATE_EMAIL);
    

    は、$_を表します.POST['email']はフォーマット検証を行い、要求に合致しない場合は空の文字列を返します.(より多くの検証フォーマットについては、公式マニュアルのfilter_varの使い方を参照してください.)または、次の文字で識別できます.
    I('post.email','','email');
    

    サポートできるフィルタ名はfilter_でなければなりませんListメソッドの有効値(サーバ環境によって異なる場合があります)は、次のとおりです.
    int
    boolean
    float
    validate_regexp
    validate_url
    validate_email
    validate_ip
    string
    stripped
    encoded
    special_chars
    unsafe_raw
    email
    url
    number_int
    number_float
    magic_quotes
    callback
    

    正規一致フィルタリングもサポートできます.たとえば、次のようになります.
    //              
    I('get.name','','/^[A-Za-z]+$/');
    I('get.id',0,'/^\d+$/');
    

    正規一致が不合格の場合は、デフォルト値を返します.いくつかの特殊な状況では、DEFAULT_でもフィルタリングを望んでいません.FILTERはすでに設定されており、使用可能:
    //                 
    I('get.name','','');
    I('get.id','',false);
    

    フィルタパラメータが空の文字列またはfalseに設定されると、フィルタは行われなくなります.最新バージョンのI関数は、変数に修飾子を使用する機能をサポートしており、タイプによって変数をフィルタリングすることが容易になります.
    I('    .   /   ')
    
    I('get.id/d'); 
    //          
    I('post.name/s'); 
    //             
    I('post.ids/a'); 
    //            
    

    使用できる修飾子は次のとおりです.
    修飾子
    さぎょう
    s
    文字列タイプへの強制変換
    d
    強制的に整数型に変換
    b
    ブール型への強制変換
    a
    強制的に配列タイプに変換
    f
    強制的に浮動小数点タイプに変換
    S方法##