ホームページ  >  記事  >  バックエンド開発  >  thinkphp のメモ

thinkphp のメモ

WBOY
WBOYオリジナル
2016-06-13 12:23:441166ブラウズ

thinkphp ノート

M プロジェクト ディレクトリ/アプリケーション ディレクトリ/Lib/Model

V プロジェクト ディレクトリ/アプリケーション ディレクトリ/Tpl

C プロジェクト ディレクトリ/アプリケーション ディレクトリ/Lib/Action

1.PATHINFO モード http://ドメイン名/プロジェクト名/ エントリファイル/モジュール名/メソッド名/キー 1/値 1/キー 2/値 2

2. 通常モード http://ドメイン名/プロジェクト名/エントリファイル? m= モジュール名&a=メソッド名&キー 1=値 1&キー 2=値 2

3.REWRITE モジュール http://ドメイン名/プロジェクト名/モジュール名/メソッド名/キー 1 / value1/key2/value2

4. 互換モード http://ドメイン名/プロジェクト名/エントリ ファイル? s=モジュール名/メソッド名/key1/value1/key2/value2

// このクラスシステムによって自動的に生成され、テスト目的のみです。
class IndexAction extends Action {
public functionindex(){
echo "hello world";
}
public function add( ) {
echo "こんにちは、ウーハオ
";

echo 'Hello'.$_GET['name'].'あなたの年齢は'.$ _GET['年齢'];
}
}

http://localhost/test/index.php/Index/add?name= wuhao

http://localhost/test/index.php/Index/add/name/wuhao

http://localhost/test/index.php /Index/add/name/wuhao/age/18

'URL_PATHINFO_DEPR'=>'-' , // URL 区切り文字

'TMPL_L_DELIM'=>'<{', //左の区切り文字を変更

'TMPL_R_DELIM' =>'}>', //正しい区切り文字を変更します

http://localhost/test/index.php/Index-add -name-wuhao-age-23

http://localhost/test/index.php/Index/index

http://localhost/test/index.php/Index/add

public function add(){

/ *echo "こんにちは、ウーハオ
";

echo 'こんにちは'.$_GET['名前'].'あなた 年齢は'.$_GET['年齢' ];*/

$name='呉暉';

$this- >assign('myname',$name) ;

//$this->myname='abc';

$ this->display();

}


一部の動的データは、assign() メソッドを通じてテンプレート表示に割り当てることができます

add メソッドにアクセスしました。

こんにちは! {$myname}

D:wampwwwtestAppTplIndex

メソッド

$m=new Model('User');

$arr=$m->select();

'DB_TYPE'=>'mysql', //データベースの種類を設定します

'DB_HOST'=>'localhost',//ホストを設定します

'DB_NAME'=>'thinkphp',//設定データベース名

'DB_USER'=>'root', //ユーザー名を設定

'DB_PWD'=>'', //パスワードを設定

'DB_PORT'=>'3306', //ポート番号を設定

'DB_PREFIX'=> 'tp_', //テーブルのプレフィックスを設定します

'DB_DSN'=>'mysql://root:@localhost:3306/thinkphp',//DSN 方式を使用してデータベース情報を構成します。これは従来の方式よりも優先されます

$user=new Model('User');

$arr =$user ->select();

var_dump($arr);

$this->display();

'SHOW_PAGE_TRACE'=>true,// ページ トレースを開きます

別のシンプルで実用的なモデルメソッドがあります

M() は new Model() と同等です;

$m=M( 'User') モデルのインスタンスはデータを操作できます。操作作業は通常、データベースの追加、削除、変更、確認です。 -C Create $m- >add()

削除-D 削除 $m->delete()

変更-U 更新 $m-> save()

Check-R Read $m->select()

a. テンプレートは配列を走査できます

{$ vo.id}----{$vo.ユーザー名}-----{$vo.sex}

b. デバッグ関数で page_trace をオンにできます

1. デバッグ関数

define('APP_DEBUG',true);

2. 構成ファイルを設定し、ページ トレースを有効にする必要があります

' SHOW_PAGE_TRACE'=>true,// ページ トレースを有効にする

読み取りデータ

データの読み取り 読み取り

$m=new Model('User');

$m=M('User');

select: $m ->select(); //すべてのデータを取得し、配列形式で返します

find: $m-> ;find($id); // 単一のデータを取得します

getField(フィールド名) // 特定のフィールド値を取得します

$arr=$m->where('id=2') ->getField('username');

データの作成

データの追加 作成

$m=new Model('User');

$m=M('User') ;

$m ->フィールド名=値

$m->add(); 戻り値は新しい ID です。数値

データの削除

$m=M('User');

$ m->delete(2); //id 2 のデータを削除します

$m->where('id=2')->delete();値は影響を受ける行の数です

更新データ

$m=M('User');

$data['id']=1;

$data['username']='ztz2';

$m->save($data); 戻り値は影響を受ける行数

CURD デモ:

========= = ================================================ = ================================================ = ================================================ = ===================================

クエリメソッド:

1. 一般的なクエリ メソッド

a. 文字列

$arr=$m ->where("sex=0 and username='gege'")->find();

b. 配列

$data['sex']=0;

$data['username']='gege';

$arr= $m->where($data)->find();

注: このメソッドのデフォルトは and 関係です。 or 関係を使用する場合は、を追加する必要があります。配列値: $data['_logic']='or';

2. 式クエリメソッド

$data['id ']= array('lt',6); $arr=$m->where($data)->select();

EQ は NEQ と等しいは等しくない、GT はより大きい、EGT は以上、LT はより小さい、ELT は以下、LIKE ファジークエリ

$data['ユーザー名']=array('like','%ge'); $arr= $m->where($data)->select();

NOTLIKE

$data['username']= array('notlike','%ge%'); $arr=$m->where($data)->select( );

注: フィールドが複数のワイルドカードに一致する場合

$data['username']=array('like',array ('%ge%','%2%','%五%' ),'and'); // 3 番目の値がない場合、デフォルトの関係は or 関係

です。 BETWEEN

$data[' id']=array('between',array(5,7)); $arr=$m->where($data) )->select();

//SELECT * FROM `tp_user` WHERE ( (`id` BETWEEN 5 AND 7 ) )

$data['id']=array('not間',array(5,7));    $arr=$m->where($data)->select();

IN

$data['id ']=array('in',array(4,6,7));    $arr=$m->where($data)->select();

//SELECT * FROM `tp_user` WHERE ( `id` IN (4,6) ,7) )

$data['id']=array('not in',array(4,6,7));    $arr=$m->where($data)->select();

//SELECT * FROM `tp_user` WHERE ( `id` NOT IN (4, 6,7) )

三、区间查询

$data['id']=array(array('gt',4 ),array('lt',10));    //默认关系は and 的关系

//SELECT * FROM `tp_user` WHERE ( (`id` > 4) AND (`id` < 10) )

$data['id']=array(array('gt',4),array('lt',10),'or') //关系就是or的关系

$data['name']=array(array('like','%2%'),array('like','%五%'),'gege' ,'or');

四、统计查询

count //获取数;max //获取最大数;min / //获取最小数;avg //获取平均数;sum //获取总和

五、SQL直接查询

a、クエリ主処理读取データ的:成功した回数返された結果、失敗した場合はブール値 false が返されます

$m=M();

$ result=$m->query("select * from t_user where id >50");

var_dump($result);

b、更新用の書き込み操作を実行します: 成功した場合は実行数が返され、失敗した場合はブール false が返されます

$m=M();

$result=$m->execute("insert into t_user(`username`) value('ztz3')");

var_dump($result);

'DB_LIKE_FIELDS'=>'title|content' //查询语句中条件自動变は模糊查询%%

查询方式演示:

============== ================================================= ================================================= ================================================= ==============================

常用连贯操作

1.where 帮助我们设置查询条件

2.order 对结果进行排序

$arr=$ m->order('id desc')->select();    $arr=$m->order(array('id'=>'desc','sex'=>'asc'))->select();

3.limit 制限制结果

limit(2,5) limit('2,5') limit(10) //limit(0,10)

4.field 设置查询字段

field('username as name,id') field(array('username'=>'name','id')

field('id ',true) //id を除くすべてのフィールドを取得

5.table

6.group

7.having

2. 補足

エイリアスは、現在のデータ テーブルのエイリアス文字列を定義するために使用されます

ページは、ページングをクエリするために使用されます (内部で制限するように変換されます) 文字列と数値

join* は、文字列と配列をサポートするためにクエリを結合するために使用されます

Union* クエリに使用される Union は文字列、配列、オブジェクトをサポートします

Distinct クエリに使用される Distinct はブール値をサポートします

ロックは、データベースのロック メカニズムのブール値です。

キャッシュは、キャッシュのクエリに使用され、複数のパラメーターをサポートします (詳細はキャッシュで説明されています)後述のセクション)

リレーションはリレーショナル クエリに使用されます (リレーショナル モデル拡張サポートが必要です) string

validate は自動データ検証に使用されます array

auto はデータのオートコンプリート配列に使用されます

フィルターはデータのフィルタリング文字列に使用されます

スコープ* は名前付き範囲文字列、配列に使用されます

============================== =========== ====================================== =========== ====================================== =========== ====================================== =========== ====

表示:

1. テンプレートの使用

a. ルール

テンプレートフォルダー [TPL]/[グループフォルダー/][テンプレートテーマフォルダー/] および同名のフォルダーの下モジュール名[Index]/メソッド名と同名のファイル[index].html (.tpl)

テンプレートファイルのサフィックス変更(設定ファイルの修正) )

'TMPL_TEMPLATE_SUFFIX'=> '.html', //テンプレート ファイルのサフィックスを変更します

b. テンプレート ファイルのディレクトリを変更します。階層

'TMPL_FILE_DEPR'=>' _', //テンプレート ファイルのディレクトリ階層を変更します

c.

'DEFAULT_THEME'=>'your', // デフォルトのテンプレートテーマを設定します

TPL の下に新しいフォルダーを作成する必要があります。テンプレート テーマ フォルダー

テンプレート テーマを動的に変更するにはどうすればよいですか?

1. config.php ファイル内のデフォルトのテンプレート項目を変更する関数をバックグラウンドで準備します

2. t=theme を渡しますURL を通じてパラメータをさまざまなテンプレートに変更できます

'DEFAULT_THEME'=>'your',//デフォルトのテンプレート テーマを設定します

'TMPL_DETECT_THEME'= >true,//テンプレート テーマを自動的に検出します

'THEME_LIST'=>'your,my',//サポートされているテンプレート テーマ リスト

http://localhost/test/index.php/Index/index/t/my http://localhost/test/index.php/Index/index/t/you

2. テンプレートの内容を出力します

a.

1. ディスプレイにはパラメータはありません: $this->display();

2. パラメータは取得可能です

$this->display(このモジュール フォルダー内の他のテンプレート ファイル);

$this->display('index2');

$this->display(他のフォルダー内のテンプレート ファイル);

$this->display('Public:error'); //注 , Tpl の下に Public フォルダーと error.html を置くだけで済みます。Public モジュール

$this->display (他のテーマのフォルダー) は必要ありません。テンプレート ファイルは以下にあります); //テーマのサポートを有効にする必要があります

$this->display('my:Index:index');

$this->display(URL パス);

$this->display('./Public/error.html');

$this->display('./Public/error.html','utf-8','text/xml');

$ this ->show($content);

3.fetch メソッド

テンプレート ファイルのコンテンツを取得し、それをstring: $content=$this->fetch('Public:error');

4.show メソッド

は必要ありませんテンプレート ファイルを直接出力できます。

$content=$this->fetch('Public:error');

dump($content );

$content=str_replace('h1','i',$content);

$ this->show( $content);

3. テンプレートでの割り当て

//$this->assign('name ','趙通正' );

$this->

$this->name='趙通正2';

4. テンプレートの置換

__PUBLIC__: 現在の Web サイトのパブリック ディレクトリ (通常は /Public/

__ROOT__) に置き換えられます。 : 現在の Web サイトのアドレスに置き換えられます (ドメイン名は含まれません)

__APP__: 現在のプロジェクトの URL アドレスに置き換えられます (ドメイン名は含まれません)

__GROUP__: 現在のプロジェクト URL に置き換えられます グループ化された URL アドレス (ドメイン名を除く)

__URL__: URL アドレスに置き換えられます現在のモジュールの (ドメイン名を除く)

__ACTION__: 現在の操作の URL アドレス (ドメイン名を除く) に置き換えられます

__SELF__: 現在のページ URL に置き換えられます

テンプレート変数ルールを変更し、設定項目を変更します

'TMPL_PARSE_STRING'=> array( //独自のテンプレート変数ルールを追加します

'__CSS__'=> __ROOT__.'/Public/Css',

' __JS__'=>__ROOT__.'/Public/Js',

),

ログインボックスの例:

拡張クラスを導入し、D の ThinkPHP3.1.2_Extend にファイルを置きます。 wampwwwtestThinkPHPExtend フォルダー。

対応する js と css:

D:wampwwwtestPublicCss ·D:wampwwwtestPublicJs

======================== = ================================================ = ================================================ = ================================================ = ====================

テンプレート内の変数:

1 つの変数出力

1. スカラー出力

2. 配列出力

{$ name [1]} {$name['k2']} {$name.k1}

3. オブジェクト出力

{$ name :k} {$name->k}

2. システム変数

用法 含义 例子
$Think.server 获取$_SERVER {$Think.server.php_self}
$Think.get 获取$_GET {$Think.get.id}
$Think.post 获取$_POST {$Think.post.name}
$Think.request 获取$_REQUEST {$Think.request.user_id}
$Think.cookie 获取$_COOKIE {$Think.cookie.username}
$Think.session 获取$_SESSION {$Think.session.user_id}
$Think.config 获取系统配置参数 {$Think.config.app_status}
$Think.lang 获取系统语言变量 {$Think.lang.user_type}
$Think.const 获取系统常量 {$Think.const.app_name}或{$Think.APP_NAME}
$Think.env 获取环境变量 {$Think.env.HOSTNAME}
$Think.version 获取框架版本号 {$Think.version}
$Think.now 获取当前时间 {$Think.now}
$Think.template 获取当前模板 {$Think.template}
$Think.ldelim 获取模板左界定符 {$Think.ldelim}
$Think.rdelim 获取模板右界定符 {$Think.rdelim}

3. 関数

{$name|strtoupper} を使用します。生成されるコンパイル済みファイルは次のとおりです:

{$name|date='Y m d H:i:s',###}

4. デフォルト値

{$name|default='これがデフォルト値です'}

5. 🎜>

- * / % -- {$name }

テンプレートの基本構文:

1. CSS ファイルと JS ファイルをインポートする

1.

2.import

//デフォルトのフォルダー設定のベースパス属性を変更できます

3.load

2. ブランチ構造

未成年

青少年

大人

> gt 番号' >

食事をするために水を運ぶ僧侶

2 人の僧侶には食べる水がない

3. ループ構造

1.for

< ;/table> list' id='v'>

{$v.username}

< ;/volist>

3.foreach

$user=M('User1');

$ arr=$user->select();

$this->assign('list',$arr);

$this->display();

;

>

4. 特殊タグ

1. 比較タグ

eq または等しいが neq に等しい、または notequal が等しくない gt が大きい egt が大きいか等しい lt が小さい elt が小さいか等しい heq が等しい nheq に等しい

2. 範囲ラベル

in

これらの数値の内側これらの数値の範囲内にありません

これらの数値はこれらの数値の範囲内にありません

{$n} は 1 ~ 10 の間です{$n} は 1 ~ 10 の間ではありません

3.present: テンプレート変数に値が割り当てられているかどうかを判断するタグ

m には値が割り当てられていますm には割り当てがありません

4.Empty: 空のタグは、テンプレート変数が空であるかどうかを決定します。

n は空の割り当てですn には値があります

5.定義:定数が定義されているかどうかを確認します

6.定義: テンプレートで定数を定義します

7.割り当て: テンプレートで変数を割り当てます

5. 他のタグの使用

1. テンプレート内で PHP コードを直接使用

echo "私は趙同正です"

2. 左右の区切り文字を変更することをお勧めします

'TMPL_L_DELIM' =>'<{', //左区切り文字を変更します

'TMPL_R_DELIM'=>'}>', //正しい区切り文字を変更します

テンプレート使用のヒント:

1. テンプレートには

< が含まれています。 🎜>

テンプレート内の変数は [variable] で受け入れられます:

2. テンプレートのレンダリング

1. テンプレートのレンダリング設定構成ファイルを自動的に開きます

'LAYOUT_ON'=>true, //テンプレート レンダリングを有効にする

テンプレート レンダリング ページを準備し、ページ内で {__CONTENT__} を使用して、そのコンテンツを受け入れます。特定のテンプレート ページ

特定のテンプレートでレンダリング テンプレートを使用したくない場合は、ページの上部に {__NOCONTENT__} を追加できます

2. 自動テンプレートのレンダリングをオンにしないでください。 テンプレートのレンダリングは、各特定のページの上部に追加できます:

3. 使用法ヒント: 他のレンダリング テンプレート ファイルを使用することもできます。 テンプレート ファイルの内容

& lt; これはレンダリング ページです。 ! !

;/html&g t;

3. テンプレートの継承

= ================= ================================ ================= ================================ ================= ================================ ================= ===========================

コントローラーのモジュールと操作:

1. 空のモジュールと空の操作

1. 空の操作

function _empty($name){

$this->show("$name が存在しませんホームページに戻る");

}

2. 空のモジュール

class EmptyAction extends Action{

function Index(){

$city=M('City');

$arr=$city ->select();

$this->assign('list',$arr) ;

;

$this->display("City:$name");

}

}

2. 手術前と手術後

1. 前操作: _before_ 操作名

2. 事後操作: _after_ 操作名

====================== ================================================= ================================================= ================================================= ======================

URL:

'URL_CASE_INSENSITIVE '=>true,//URL は大文字と小文字を区別しません

'URL_HTML_SUFFIX'=>'html|shtml|xml',//疑似静的サフィックスを制限します

1. URL ルール
1. デフォルトでは大文字と小文字が区別されます
2. 大文字と小文字を区別したくない場合は、設定ファイル
「URL_CASE_INSENSITIVE」を変更できます。 =>true, //url 大文字と小文字は区別されません
3. モジュール名が UserGroupAction
の場合、モジュールを検索する URL は
http://localhost/thinkphp4/ として記述する必要があります。 Index.php/user_group/index
4. 「URL_CASE_INSENSITIVE」=>false
の場合、URL は
http://localhost/thinkphp4/index.php/UserGroup/index2. URL 擬似静的
'URL_HTML_SUFFIX'=> 'html 1. 正規表現設定ルーティング
'my'=>//静的アドレス ルーティング>':id/:num'=>'インデックス/インデックス', //動的アドレス ルーティング
'年/:年/:月/:日付'=>'インデックス/インデックス', //動的およびstatic混合アドレスルーティング
'year/:yeard/:monthd/:dated'=> ;'Index/index', //動的および静的混合アドレスルーティング
タイプを表すdを追加するのは数値のみです
'my/:id$'=>'Index/index', //Add $説明アドレスは my/1000 のみであり、その後に他のコンテンツを続けることはできません
2. 正規表現構成ルーティング
'/^年/(d{4})/(d{2})/(d {2})/'=>'インデックス/インデックス?年=:1&月=:2&日付=:3'
3. 注:
1. より複雑なルートは、
' URL_ROUTE_RULES'=>array(
'my/:year/:month:/:day'=>'Index/) に配置されます。 day',
'my/:idd'=>'インデックス/インデックス',
'my/:name'=>'インデックス/インデックス',
)
2.完全に一致するルーティング ルールとして $ を使用します
'URL_ROUTE_RULES'=>array(
'my/:idd$'=>'Index/index',
'my/:name$'=> ;'インデックス/インデックス',
'my/:年/:月:/:日 $'=>'インデックス/日',
),
3. 通常のマッチング方法を使用します
'URL_ROUTE_RULES'=>array(
'/^my/(d )$/ '=>'Index/index?id=:1',
'/^my/(w )$/' =>'インデックス/インデックス?名前=:1',
'/^my /(d{4})/(d{2})/(d{2})$/'=>'インデックス/day?year=:1&month=:2&day=:3',
)、
4. URL の生成




Jump



$this->success ('クエリ成功',U('User/test'));

$this- >redirect('User/test','',5,'ページがジャンプしています ');

'APP_GROUP_LIST' => 'Home,Admin', //プロジェクトグループ設定

'DEFAULT_GROUP' => ; 'ホーム', //デフォルトグループ

========== ==================== ============================= ==================== ============================= ==================== ============================= ==================== ===============

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