thinkphp メモ、thinkphp
M プロジェクト ディレクトリ/アプリケーション ディレクトリ/Lib/Model
Vプロジェクトディレクトリ/アプリケーションディレクトリ/Tpl
Cプロジェクトディレクトリ/アプリケーションディレクトリ/Lib/Action
1.PATHINFOモード http://ドメイン名/プロジェクト名/エントリファイル/モジュール名/メソッド名/キー1/値1/キー2/値2
2. 通常モード http://ドメイン名/プロジェクト名/エントリファイル?m=モジュール名&a=メソッド名&key 1=値1&key 2=値2
3.REWRITEモジュール http://ドメイン名/プロジェクト名/モジュール名/メソッド名/キー1/値1/キー2/値2
4. 互換モード http://ドメイン名/プロジェクト名/エントリファイル? s=モジュール名/メソッド名/キー1/値1/キー2/値2
//このクラスはシステムによって自動的に生成され、テスト目的のみです
class IndexAction extends Action {
public functionindex(){
echo "hello world";
}
public function add() {
エコー「こんにちは、ウーハオ
」;
echo 'Hello'.$_GET['name'].'あなたの年齢は'.$_GET['age'];
}
}
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
パブリック関数 add(){
/*エコー「こんにちは、ウーハオ
」;
echo 'Hello'.$_GET['name'].'あなたの年齢は'.$_GET['age'];*/
$name='ウーハオ';
$this->assign('myname',$name);
//$this->myname='abc';
$this->display();
}
一部の動的データは、assign() メソッドを通じて表示用のテンプレートに割り当てることができます
add メソッドにアクセスしました。
こんにちは! {$myname}
D:wampwwwtestAppTplIndex
メソッド内で新しいModel(テーブル名)の形でデータベースを操作する必要があります
$m=新しいモデル('ユーザー');
$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=新しいモデル('ユーザー');
$arr=$user->select();
var_dump($arr);
$this->display();
'SHOW_PAGE_TRACE'=>true,//ページ トレースを開きます
シンプルで実用的なモデルもあります
M() は new Model(); と同等です
$m=M('ユーザー');
$arr=$m->select();
モデルのインスタンスを利用して、データを操作することができます。操作作業は、データベース CURD の追加、削除、変更、確認が一般的です。
追加 -C $m を作成->add()
削除 -D 削除 $m->delete()
変更 -U 更新 $m->save()
Check -R Read $m->select()
a. テンプレートは配列を横断できます
<ボリスト名='data' id='vo'>
{$vo.id}-----{$vo.username}-----{$vo.sex}
ボリスト>
b. デバッグ機能で page_trace を有効にできます
1. デバッグ機能をオンにする
define('APP_DEBUG',true);
2. 設定ファイルを設定し、ページトレースを有効にする必要があります
'SHOW_PAGE_TRACE'=>true,// ページ トレースを開きます
データを読む
データの読み込み Read
$m=新しいモデル('ユーザー');
$m=M('ユーザー');
select: $m->select(); // すべてのデータを取得し、配列形式で返します
find:$m->find($id) // 単一のデータを取得します
getField(フィールド名) //特定のフィールド値を取得します
$arr=$m->where('id=2')->getField('username');
データを作成する
データ追加作成
$m=新しいモデル('ユーザー');
$m=M('ユーザー');
$m->フィールド名=値
$m->add(); 戻り値は新しいID番号です
データを削除する
$m=M('ユーザー');
$m->delete(2) //ID 2 のデータを削除します;
$m->where('id=2')->delete(); 戻り値は影響を受ける行の数です
データを更新する
$m=M('ユーザー');
$data['id']=1;
$data['ユーザー名']='ztz2';
$m->save($data); 戻り値は影響を受ける行の数です
カードデモ:
================================================ === ============================================== === ============================================== === =============================================
お問い合わせ方法:
1.通常のクエリ方法
文字列
$arr=$m->where("sex=0 and username='gege'")->find();
b. 配列
$data['性別']=0;
$data['ユーザー名']='ゲゲ';
$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は以下、ファジークエリのように
$data['username']=array('like','%ge'); $arr=$m->where($data)->select();
好きじゃない
$data['username']=array('notlike','%ge%'); $arr=$m->where($data)->select();
注: フィールドが複数のワイルドカードと一致する必要がある場合
$data['username']=array('like',array('%ge%','%2%','%五%'),'and'); // 3 番目の値がない場合は、デフォルトの関係は or 関係です
間
$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 between',array(5,7)); $arr=$m->where($data)->select();
で
$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) )
3. 間隔クエリ
$data['id']=array(array('gt',4),array('lt',10)) //デフォルトの関係は と の関係です
//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');
4. 統計クエリ
count // 数値を取得します。 min // 最小数値を取得します。 // 合計を取得します。
5. 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("t_user(`username`) の値('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 結果を制限する
制限(2,5) 制限('2,5') 制限(10) //制限(0,10)
4.field クエリフィールドを設定します
field('username as name,id') field(array('username'=>'name','id')
field('id',true) //id を除くすべてのフィールドを取得します
5.テーブル
6.グループ
7.持つ
2.補足
エイリアスは、現在のデータテーブルのエイリアス文字列を定義するために使用されます
ページは、ページング (内部で制限するように変換される) 文字列と数値をクエリするために使用されます
join* はクエリの文字列と配列の結合をサポートするために使用されます
Union* クエリ文字列、配列、オブジェクトのユニオンサポート
クエリのdistinctはブール値をサポートします
lock データベースのブール値のロック機構
キャッシュはキャッシュのクエリに使用され、複数のパラメーターをサポートします (キャッシュのセクションで詳しく説明します)
リレーションは関連するクエリに使用されます (関連するモデル拡張機能のサポートが必要です) 文字列
validate は自動データ検証配列に使用されます
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->表示 (他のフォルダー内のテンプレート ファイル);
$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.フェッチメソッド
テンプレート ファイルのコンテンツを取得し、文字列として返します: $content=$this->fetch('Public:error');
4.メソッドの表示
テンプレートファイルは必要なく、テンプレートの内容を直接出力できます
$content=$this->fetch('Public:error');
ダンプ($content);
$content=str_replace('h1','i',$content);
$this->show($content);
3. テンプレートでの割り当て
//$this->assign('name','趙同正');
$this->name='趙同正2' $this->display();
4. テンプレートの置き換え
__PUBLIC__: 現在の Web サイトのパブリック ディレクトリ (通常は /Public/) に置き換えられます。
__ROOT__: 現在の Web サイトのアドレス (ドメイン名を除く) に置き換えられます
__APP__: 現在のプロジェクトの URL アドレスに置き換えられます (ドメイン名を除く)
__GROUP__: 現在のグループの URL アドレスに置き換えられます (ドメイン名を除く)
__URL__: 現在のモジュールの URL アドレス (ドメイン名を除く) に置き換えられます
__ACTION__: 現在の操作の URL アドレスに置き換えられます (ドメイン名を除く)
__SELF__: 現在のページの URL に置き換えられます
テンプレート変数ルールを置換し、構成項目を変更します
'TMPL_PARSE_STRING'=>array( //独自のテンプレート変数ルールを追加します
'__CSS__'=>__ROOT__.'/Public/Css',
'__JS__'=>__ROOT__.'/Public/Js',
)、
ログインボックスの例:
拡張クラスを導入し、D:wampwwwtestThinkPHPExtend フォルダーの ThinkPHP3.1.2_Extend にファイルを置きます。
対応する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$_GET |
{$Think.get.id} |
$Think.post |
$_POST をゲット |
{$Think.post.name} |
$考える.リクエスト |
$_REQUESTを取得 |
{$Think.request.user_id} |
$Think.cookie |
$_COOKIE をゲット |
{$Think.cookie.ユーザー名} |
$Think.セッション |
$_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.ホスト名} |
$Think.バージョン |
フレームワークのバージョン番号を取得します |
{$Think.version} |
$Think.now |
現在の時刻を取得します |
{$Think.now} |
$Think.テンプレート |
現在のテンプレートを取得します |
{$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.インポート
//test.js ファイルを Public フォルダーの下にインポートします。インポート タグは type 属性を省略できます。
//デフォルトのフォルダーを変更して、basepath 属性を設定できます;
3.ロード
2.支店の構造
未成年
若者
大人
> gt = egt != neq === heq !== nheq
<スイッチ名='番号'>
僧侶が水を運ぶ
2 人の僧侶が水を飲む
3 人の僧侶には食べる水がない
これはデフォルト値です
3. ループ構造
1.for
<表の境界線='1' 幅='500'>
<開始='10' 終了='00' 名前='j' ステップ='-2' 比較='gt'>
表>
2.ボリスト
<ボリスト名='リスト' id='v'>
{$v.ユーザー名}
ボリスト>
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. 範囲タグ
で
これらの数値の内側これらの数値の範囲外です
これらの数値の内側これらの数値の範囲外
間
{$n} は 1-10 の間です{$n} は 1 と 10 の間ではありません
3.present: テンプレート変数に値が割り当てられているかどうかを判断するためのタグ、
m には値が割り当てられていますm には値が割り当てられていません
4.Empty: 空のタグは、テンプレート変数が空かどうかを決定します。
n は空の値を割り当てますn には値があります
5.Defined: 定数が定義されているかどうかを判断します
6.定義: テンプレートで定数を定義します
7.Assing: テンプレート内の変数に値を代入します
5. 他のタグの使用
1. テンプレート内で PHP コードを直接使用します
「私は趙同正です」
2. 左右の区切り文字を変更することをお勧めします
設定ファイルの変更
'TMPL_L_DELIM'=>'<{', //左区切り文字を変更します
'TMPL_R_DELIM'=>'}>', //正しい区切り文字を変更します
テンプレート使用のヒント:
1. テンプレートには
が含まれています
テンプレートで変数を受け入れるには [variable] を使用します:
2. テンプレートのレンダリング
1. テンプレートのレンダリングを自動的にオンにし、設定ファイルを設定します
'LAYOUT_ON'=>true, //テンプレートのレンダリングを有効にする
テンプレート レンダリング ページを準備し、ページ内で {__CONTENT__} を使用して、特定のテンプレート ページのコンテンツを受け入れます
特定のテンプレートでレンダリング テンプレートを使用したくない場合は、ページの上部に {__NOCONTENT__} を追加できます
2. テンプレートの自動レンダリングがオンになっていない場合は、特定の各ページの上部に
を追加できます。
3. 使用上のヒント: レンダリング テンプレート ファイルで他のテンプレート ファイルの内容を使用することもできます
これがレンダリング ページです。 ! !