ホームページ  >  記事  >  バックエンド開発  >  thinkphp メモ、thinkphp_PHP チュートリアル

thinkphp メモ、thinkphp_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 09:44:50997ブラウズ

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. 使用上のヒント: レンダリング テンプレート ファイルで他のテンプレート ファイルの内容を使用することもできます

これがレンダリング ページです。 ! !

3. テンプレートの継承 ================================================ === ============================================== === ============================================== === ============================================= コントローラーのモジュールと操作: 1. 空のモジュールと空のオペレーション 1. 空の操作 関数 _empty($name){ $this->show("$name が存在しません ホームページに戻る"); } 2. 空のモジュール クラス EmptyAction は Action{ を拡張します 関数インデックス(){ $city=M('都市'); $arr=$city->select(); $this->assign('list',$arr); $name=MODULE_NAME; $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/index
2 のように記述することもできます。
'URL_HTML_SUFFIX'=> 'html|shtml|', //疑似静的サフィックスを制限します
1. ルーティングを開始します
設定ファイルでルーティングのサポートを有効にします
2. 正規表現を使用してルーティングを設定します
=>' インデックス/インデックス', //静的アドレス ルーティング
':id/:num'=>'インデックス/インデックス', //動的アドレス ルーティング
'年/:年/:月/:日付'= >'Index /index', //動的および静的混合アドレス ルーティング
'year/:yeard/:monthd/:dated'=>'Index/index', //動的および静的混合アドレス ルーティング
プラス d は、 type のみ これは数値です
'my/:id$'=>'Index/index', // アドレスが my/1000 のみであり、その後に他のコンテンツが存在できないことを示すには、$ を追加します
2.正規表現構成ルーティング
'/ ^year/(d{4})/(d{2})/(d{2})/'=>'Index/index?year=:1&month=:2&date=:3 '
3. 注:
1. より複雑なルートが前に配置されます
'URL_ROUTE_RULES'=>array(
'my/:year/:month:/:day'=>'Index/day',
'my/:idd' =>'Index/index',
'my/:name'=>'Index/index',
)
2. $ を完全一致ルーティング ルールとして使用できます
'URL_ROUTE_RULES' =>array(
' my/:idd$'=>'インデックス/インデックス',
'my/:name$'=>'インデックス/インデックス',
'my/:年/:月:/ :day$'=> 'インデックス/日',
),
3. 通常のマッチング方法を使用します
'URL_ROUTE_RULES'=>array(
'/^my/(d+)$/'=>'Index/ Index?id=:1 ',
'/^my/(w+)$/'=>'Index/index?name=:1',
'/^my/(d{4})/(d{ 2})/(d {2})$/'=>'Index/day?year=:1&month=:2&day=:3',
4. URL 書き換え

5.
ページジャンプ

$this->success('クエリ成功',U('ユーザー/テスト'));
$this->redirect('ユーザー/テスト','',5,'ページがジャンプしています'); 'APP_GROUP_LIST' => 'Home,Admin', //プロジェクトグループ設定 'DEFAULT_GROUP' => 'ホーム', //デフォルトグループ ================================================ === ============================================== === ============================================== === =============================================

http://www.bkjia.com/PHPjc/1045058.html

www.bkjia.com

tru​​ehttp://www.bkjia.com/PHPjc/1045058.html技術記事 thinkphp メモ、thinkphp M プロジェクト ディレクトリ/アプリケーション ディレクトリ/Lib/Model V プロジェクト ディレクトリ/アプリケーション ディレクトリ/Tpl C プロジェクト ディレクトリ/アプリケーション ディレクトリ/Lib/Action 1.PATHINFO モード http://ドメイン名/プロジェクト名/エントリ...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。