ThinkPHP は、無料のオープンソースで高速かつシンプルなオブジェクト指向の軽量 PHP 開発フレームワークで、2006 年初頭に設立され、アジャイルな WEB アプリケーション開発と簡素化を目的として Apache2 オープンソース契約に基づいてリリースされました。アプリケーション開発から生まれた企業。 ThinkPHP は、誕生以来、シンプルで実用的な設計原則を堅持しており、優れたパフォーマンスと最小限のコードを維持しながら、使いやすさにも配慮しています。多くの独自機能を備えており、コミュニティチームの積極的な参加により、使いやすさ、拡張性、パフォーマンスの面で継続的に最適化と改善が行われ、中国で最も有力かつ影響力のある WEB アプリケーション開発フレームワークに成長しました。多くの典型的なケースにより、商用およびポータル レベルの開発に安定して使用できることが保証されます。
ThinkPHP MVC ベースの PHP フレームワーク
M – モデル Model 仕事: データ操作を担当します
V – View View(テンプレート) 仕事:トップページの表示を担当
C – コントローラー コントローラー (モジュール) の動作: 機能を説明します
ThinkPHP コアファイルの紹介
§─ThinkPHP.php フレームワークエントリーファイル
§─共通フレームワーク公開ファイル
§─Conf フレームワーク設定ファイル
§─Extend Framework 拡張ディレクトリ
§─Lang コア言語パッケージのディレクトリ
§─Lib コアライブラリディレクトリ
│ §─Behavior コアビヘイビアーライブラリ
│ §─コアコア基本クラスライブラリ
│ §─ドライバー内蔵ドライバー
│ │ §─キャッシュ内蔵キャッシュドライバー
│ │ §─Db 内蔵データベースドライバー
│ │ §─TagLib 内蔵タグドライバー
│ │ └─テンプレート内蔵テンプレートエンジンドライバー
│ └─テンプレート内蔵テンプレートエンジン
└─Tplシステムテンプレートディレクトリ
#プロジェクトのディレクトリ構造と説明:
ホームフロントエンドアプリケーションフォルダー
§─プロジェクト共通公開ファイルディレクトリ
§─Conf プロジェクト構成ディレクトリ
§─Lang プロジェクトの言語ディレクトリ
§─Libプロジェクトライブラリディレクトリ
│ §─Action アクションクラスライブラリディレクトリ
│ §─Behavior 動作ライブラリディレクトリ
│ §─模型モデルライブラリディレクトリ
│ └─Widget ウィジェットクラスライブラリディレクトリ
§─ランタイムプロジェクトのランタイムディレクトリ
│ §─キャッシュテンプレートのキャッシュディレクトリ
│ §─データデータキャッシュディレクトリ
│ §─Logs ログファイルディレクトリ
│ └─Temp一時キャッシュディレクトリ
└─Tplプロジェクトテンプレートディレクトリ
ThinkPHP 3 MVC パターンと URL アクセス
MVCとは
M-Model はデータを操作するモデルクラスを作成します
V-View は HTML ファイルを書き込み、ページをレンダリングします
Cコントローラーはクラスファイル(UserAction.class.php)を書き込みます
ThinkPHP の MVC 機能
記述は非常に柔軟で、ビューのみを実行できます
ThinkPHPのMVCに対応するディレクトリ
M プロジェクトディレクトリ/アプリケーションディレクトリ/Lib/Model
V プロジェクトディレクトリ/アプリケーションディレクトリ/Tpl
Cプロジェクトディレクトリ/アプリケーションディレクトリ/Lib/Action
URLアクセスC
URLにアクセスする4つの方法
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
ThinkPHP 3.1.2 の出力とモデルの使用法
PHP 3 の出力を考える
a. echo
などの PHP のネイティブ出力メソッドによるページへの出力
b. 表示メソッドによる出力
変数を割り当てたい場合は、assignメソッドを使用できます
c. 左右の区切り文字を変更します
設定ファイル内の設定項目は変更しないでください
‘TMPL_L_DELIM’=>'<{‘, //左区切り文字を変更します
'TMPL_R_DELIM'=>'}>', //正しい区切り文字を変更します
PHP 3 モデルの使用法を考える
データベースはメソッド内で新しい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_', //テーブルプレフィックスを設定します
DSN メソッドを使用して設定することもできます
‘DB_DSN’=>’mysql://root:@localhost:3306/thinkphp’,//DSN メソッドを使用してデータベース情報を構成します
両方の方法が同時に存在する場合、DSN 方法が優先されます
シンプルで実用的なモデルもあります
M() は new Model() と同等です;
$m=M('ユーザー');
$arr=$m->select();
モデルのインスタンスを利用して、データを操作することができます。操作作業は、データベース CURD の追加、削除、変更、確認が一般的です。
追加 -C $m->add() を作成
削除 -D 削除 $m->delete()
変更 -U 更新 $m->save()
Check -R Read $m->select()
1
2
3
<ボリスト名='data' id='vo'>
ボリスト>
b. デバッグ関数で page_trace を有効にできます
1. デバッグ機能をオンにする
//3. デバッグモードをオンにします (メインエントリファイルでindex.phpを設定します)
定義('APP_DEBUG',true);
2. 設定ファイルを設定し、ページトレースを有効にする必要があります
‘SHOW_PAGE_TRACE’=>true,//ページ トレースを有効にするには、それを表示するために $this->display() が必要です
CURDの機能
データの読み込み Read
$m=新しいモデル('ユーザー');
$m=M('ユーザー');
選択
$m->select();//すべてのデータを取得し、配列形式で返します
見つける
$m->find(2);//単一のデータを取得します
getField(フィールド名)//特定のフィールド値を取得します
$arr=$m->where(‘id=2’)->getField(‘ユーザー名’);
データを作成する
データの追加 作成
$m=新しいモデル('ユーザー');
$m=M('ユーザー');
$m->フィールド名=値
$m->add();
戻り値は新しく追加されたID番号です
データを削除します
$m=M('ユーザー');
$m->delete(2); //ID 2のデータを削除します
$m->where(‘id=2’)->delete(); //上記と同じ効果で、ID 2 のデータも削除されます
戻り値は影響を受ける行の数です
データを更新します
$m=M('ユーザー');
$data['id']=1;
$data['ユーザー名']='ztz2';
$m->save($data);
戻り値は影響を受ける行の数です
お問い合わせ方法
文字列
$arr=$m->where(“sex=0 and username=’gege’”)->find();
b. 配列
$data['性別']=0;
$data['ユーザー名']='ゲゲ';
$arr=$m->where($data)->find();
注: このメソッドのデフォルトは and 関係です。 or 関係を使用する場合は、配列値を追加する必要があります
。
$data['性別']=0;
$data['ユーザー名']='ゲゲ';
$data['_logic']='または';
式クエリメソッド
$data['id']=array('lt',6);
$arr=$m->where($data)->select();
EQ は
に等しい
NEQ は
と等しくありません
GT は
より大きい
EGT は
以上です
LT は
未満です
ELT は
以下です
ファジークエリが好き
$data['ユーザー名']=array('like','%ge');
$arr=$m->where($data)->select();
好きじゃない
$data['username']=array('notlike','%ge%') //notlike の途中にスペースはありません
$arr=$m->where($data)->select();
注: フィールドが複数のワイルドカードと一致する必要がある場合
$arr=$m->where($data)->select();
間
$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));//not と between の間にはスペースが必要であることに注意してください
$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('入っていない',array(4,6,7));
//SELECT * FROM tp_user WHERE (id NOT IN (4,6,7))
間隔クエリ
$data['id']=array(array('gt',4),array('lt',10));//デフォルトの関係は と の関係です
//SELECT * FROM tp_user WHERE ( (id > 4) AND (id
$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.execute は書き込み操作を更新するために使用されます
影響を受けた行の数を正常に返します
失敗した場合はブール値 false を返します
$m=M();
$result=$m->execute(“t_user(ユーザー名)の値(‘ztz3’)に挿入”);
var_dump($result);
一貫した運用
よく使用されるコヒーレントな操作
1.どこ
クエリ条件の設定にご協力ください
2.注文
結果を並べ替える
$arr=$m->order(‘id desc’)->select();
$arr=$m->order(array('id'=>'desc','sex'=>'asc'))->select();
3.限界
結果を制限する
制限(2,5)
リミット('2,5')
制限(10)//制限(0,10)
4.フィールド
クエリフィールドを設定する
フィールド(「名前としてのユーザー名,ID」)
フィールド(配列('ユーザー名'=>'名前','ID')
field(‘id’,true) //id を除くすべてのフィールドを取得します
5.テーブル
テーブル名を設定します
6.グループ
グループ
7.持つ
alias は、現在のデータテーブルのエイリアス文字列を定義するために使用されます
page はページングをクエリするために使用されます (内部で制限するように変換されます) 文字列と数値
join* はクエリを結合して文字列と配列をサポートするために使用されます
Union* クエリ文字列、配列、オブジェクトのユニオンサポート
クエリのブール値の個別サポート
lock データベースのブール値に使用されるロック機構
キャッシュはキャッシュをクエリするために使用され、複数のパラメーターをサポートします (キャッシュのセクションで詳しく説明します)
relationship はリレーショナル クエリに使用されます (リレーショナル モデル拡張サポートが必要です) 文字列
validate は自動データ検証配列に使用されます
auto はデータ配列を自動的に完成させるために使用されます
filter はデータのフィルタリング文字列に使用されます
scope* はスコープ文字列、array に名前を付けるために使用されます
見る
テンプレートの使用
a. ルール
テンプレートフォルダ配下 [TPL]/[グループフォルダ/][テンプレートテーマフォルダ/] モジュール名と同名のフォルダ[インデックス]/メソッド名と同名のファイル[インデックス].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’, //サポートされているテンプレートテーマリスト
出力テンプレートのコンテンツ
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);
テンプレートでの割り当て
//$this->assign('name','Zhao Tongzheng');
$this->name=’趙同正2’;
$this->display();
テンプレートの置き換え
__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’,
)、
テンプレート内の変数
可変出力
1. スカラー出力
2.配列出力
{$name[1]} //インデックス配列
{$name['k2']} //連想配列
{$name.k1}
3. オブジェクト出力
{$name:k}
{$name->k}
システム変数
{$Think.get.id}
関数を使用する
{$name|strtoupper} によって生成されるコンパイル済みファイルは
) です。
{$name|date='Y m d H:i:s',###}
デフォルト値
{$name|default='これがデフォルト値です'}
オペレーター
+ – * / % ++ —
{$name++}
テンプレートの基本構文
CSS ファイルと JS ファイルをインポートする
1.CSSリンク
js scr
2.インポート
<インポート タイプ='css' ファイル='Css.test' />
//デフォルトのフォルダーを変更し、basepath 属性を設定できます
3.ロード
//メソッドはインポートされたファイルの種類を自動的に検出できます
ブランチ構造
1.if
人間は泥でできている
女性は水でできています
未成年
青春
大人
>GT
== 等価
>= 例
!=neq
===ヘク
!== んへq
<スイッチ名='番号'>
<デフォルト/> これがデフォルト値です
スイッチ>
ループ構造
1.for
<表の境界線='1' 幅='500'>
<開始='10' 終了='00' 名前='j' ステップ='-2' 比較='gt'>
2.ボリスト
<ボリスト名='リスト' id='v'>
{$v.ユーザー名}
ボリスト>
3.foreach
{$k}——-{$v}
特別なタグ
1. タグを比較します
eq または等しいは
と等しい
neq または notequal は
と等しくありません
gt は
より大きいです
例:
以上です
未満です
elt 以下
heq は常に
と等しい
nheq は常に
2.範囲タグ
で
間
3.プレゼント
タグを使用して、テンプレート変数に値が割り当てられているかどうかを判断します。
4.空
空のタグは、テンプレート変数が空かどうかを決定します。
5.定義済み
定数が定義されているかどうかを確認します
6.定義
テンプレートで定数を定義する
7.お尻
テンプレート内の変数に値を割り当てる
その他に使用するタグ
1. テンプレート内で PHP コードを直接使用します
2. 左右の区切り文字を変更することをお勧めします
設定ファイルの変更
‘TMPL_L_DELIM’=>'<{‘, //左区切り文字を変更します
'TMPL_R_DELIM'=>'}>', //正しい区切り文字を変更します
テンプレートの使用に関するヒント
テンプレートには
が含まれています
テンプレートで変数を受け入れるには [変数] を使用します
テンプレートのレンダリング
1. テンプレートのレンダリングを自動的にオンにし、設定ファイルを設定します
'LAYOUT_ON'=>true,// テンプレートのレンダリングを有効にする
テンプレート レンダリング ページを準備し、ページ内で {__CONTENT__} を使用して特定のテンプレート ページのコンテンツを受け入れます
特定のテンプレートでレンダリング テンプレートを使用したくない場合は、ページの上部に {__NOCONTENT__}
を追加できます。
2. テンプレートの自動レンダリングがオンになっていない場合は、特定の各ページの上部にテンプレートを追加できます
<レイアウト名='レイアウト'/>
3. 使用スキル
他のテンプレート ファイルの内容もテンプレート ファイルのレンダリングに使用できます
これがレンダリング ページです。 ! !