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
未成年
青少年
大人
> gt 番号' >
3. ループ構造
1.for
{$v.username } | {$v.password} | >