ThinkPHP フレームワークの概要_PHP チュートリアル

WBOY
リリース: 2016-07-13 10:19:04
オリジナル
884 人が閲覧しました

ThinkPHP フレームワークの紹介

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()

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

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();

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

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

$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));

$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));//デフォルトの関係は と の関係です
//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.インポート
//test.js ファイルを Public フォルダーの下にインポートします。インポート タグでは type 属性を省略できます。
<インポート タイプ='css' ファイル='Css.test' />
//デフォルトのフォルダーを変更し、basepath 属性を設定できます

3.ロード
//メソッドはインポートされたファイルの種類を自動的に検出できます

ブランチ構造
1.if

人間は泥でできている

女性は水でできています


未成年

青春

大人

>GT
== 等価
>= 例
!=neq
===ヘク
!== んへq

<スイッチ名='番号'>
僧侶が水を運ぶ
二人の僧侶が台湾の水を飲む
3 人の僧侶には食べる水がない
<デフォルト/> これがデフォルト値です

ループ構造
1.for
<表の境界線='1' 幅='500'>
<開始='10' 終了='00' 名前='j' ステップ='-2' 比較='gt'>
{$j}abc>

2.ボリスト
<ボリスト名='リスト' id='v'>
{$v.ユーザー名}


3.foreach

{$k}——-{$v}


特別なタグ
1. タグを比較します
eq または等しいは
と等しい neq または notequal は
と等しくありません gt は
より大きいです 例:
以上です
未満です elt 以下
heq は常に
と等しい nheq は常に

と等しいとは限りません

2.範囲タグ

これらの数値の内側これらの数値の範囲外です
これらの数値の範囲内これらの数値の範囲内ではありません

{$n} は 1 ~ 10 の間です{$n} は 1 ~ 10 の間ではありません
3.プレゼント
タグを使用して、テンプレート変数に値が割り当てられているかどうかを判断します。
m には値が割り当てられていますm には値が割り当てられていません
4.空
空のタグは、テンプレート変数が空かどうかを決定します。
n には空の値が割り当てられますn には値があります
5.定義済み
定数が定義されているかどうかを確認します
6.定義
テンプレートで定数を定義する
7.お尻
テンプレート内の変数に値を割り当てる

その他に使用するタグ
1. テンプレート内で PHP コードを直接使用します
エコー「私は趙同正です」
2. 左右の区切り文字を変更することをお勧めします
設定ファイルの変更
‘TMPL_L_DELIM’=>'<{‘, //左区切り文字を変更します
'TMPL_R_DELIM'=>'}>', //正しい区切り文字を変更します

テンプレートの使用に関するヒント
テンプレートには
が含まれています






テンプレートで変数を受け入れるには [変数] を使用します

テンプレートのレンダリング
1. テンプレートのレンダリングを自動的にオンにし、設定ファイルを設定します
'LAYOUT_ON'=>true,// テンプレートのレンダリングを有効にする
テンプレート レンダリング ページを準備し、ページ内で {__CONTENT__} を使用して特定のテンプレート ページのコンテンツを受け入れます
特定のテンプレートでレンダリング テンプレートを使用したくない場合は、ページの上部に {__NOCONTENT__}
を追加できます。 2. テンプレートの自動レンダリングがオンになっていない場合は、特定の各ページの上部にテンプレートを追加できます
<レイアウト名='レイアウト'/>
3. 使用スキル
他のテンプレート ファイルの内容もテンプレート ファイルのレンダリングに使用できます


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


{__コンテンツ__}


テンプレートの継承

コントローラーモジュールと操作
空のモジュールと空のオペレーション
1.空の操作
関数 _empty($name){
$this->show(“$name が存在しません ホームページに戻る”);
}
2. 空のモジュール
class EmptyAction は Action{
を拡張します 関数インデックス(){
$city=M('都市');
$arr=$city->select();
$this->assign('list',$arr);
$name=MODULE_NAME;
$this->display(“都市:$name”);
}
}

手術前と手術後
1. 事前操作: _before_操作名
2. ポストオペレーション: _after_ オペレーション名

URL
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

疑似静的URL
‘URL_HTML_SUFFIX’=>’html|shtml|xml’, //擬似静的サフィックスを制限します
URL ルーティング
1.ルーティングを開始します
設定ファイルでルーティングのサポートを有効にするには
2. ルーティングを使用する
1. ルール式設定ルーティング
'my'=>'Index/index',//静的アドレスルーティング
‘:id/:num’=>’Index/index’,//動的アドレスルーティング
‘year/:year/:month/:date’=>’Index/index’,//動的および静的混合アドレスルーティング
‘year/:yeard/:monthd/:dated’=>’Index/index’,//動的および静的混合アドレスルーティング
d を追加すると、型は数字のみになることを意味します
‘my/:id$’=>’Index/index’,// アドレスが my/1000 のみであり、その後に他のコンテンツが存在できないことを示すには、$ を追加します
2. 正規表現によるルーティング設定
‘/^年/(d{4})/(d{2})/(d{2})/’=>’インデックス/インデックス?年=:1&月=:2&日付=:3'
3. 注意事項:
1. ルートが複雑であればあるほど、より前に配置されます
「URL_ROUTE_RULES」=>array(
「my/:year/:month:/:day」=>「インデックス/日」、
「my/:idd」=>「インデックス/インデックス」,
「my/:name」=>「インデックス/インデックス」,
)
2. $ を完全一致ルーティング ルールとして使用できます
「URL_ROUTE_RULES」=>array(
「my/:idd$」=>「インデックス/インデックス」,
「my/:name$」=>「インデックス/インデックス」,
‘my/:year/:month:/:day$’=>’インデックス/日’,
)、
3. 通常のマッチングを使用します
「URL_ROUTE_RULES」=>array(
‘/^my/(d+)$/’=>’インデックス/index?id=:1’,
‘/^my/(w+)$/’=>’インデックス/インデックス?名前=:1’,
‘/^my/(d{4})/(d{2})/(d{2})$/’=>’インデックス/日?年=:1&月=:2&日=:3',
)、

URL書き換え
URL生成

グループ化、ページジャンプ、ajax
マルチアプリケーション構成のヒント
グループ化を使用する
ページジャンプ
$this->success(‘クエリ成功’,U(‘ユーザー/テスト’));
$this->redirect('ユーザー/テスト',”,5,'ページがジャンプしています');
アヤックスのスキル
構成ファイル内の配列名と値を取得するための Big C メソッド
echo C('DB_USER');

Big Fメソッドファイル処理
書き込み: F('ファイル名', '配列', 'ディレクトリ');
読み取り: F('ファイル名',”,'ディレクトリ');

Big U メソッド URL 処理
PHP で
U('メソッド名')
テンプレート内
現在の関数 {:U('メソッド名')}
その他の関数 {:U(‘関数/メソッド名’)}

*ファイルインポート

*フォーム処理
方法 1 $this->_post(”);
送信フォームを取得するには、関数 htmlspecialchars() を使用してフィルターします
$username=$this->_post(‘ユーザー名’);

方法 2 I(‘ユーザー名’) [3.1.3 の新機能]
Big I が自動的に投稿と取得を決定します
$ユーザー名=I(‘ユーザー名’);
echo I('ユーザー名','値が存在しない場合のデフォルト値','使用関数');

データ送信があるかどうかを確認します:
print_r(I('post.'));

セキュリティを向上させるためにフォーム処理機能へのアクセスを禁止します
方法 1
if(!$this->isPost()) _404(‘ページが存在しません’, U(‘index’));
echo '通常の送信';

方法 2 (推奨) 停止ページでエラー ページをカスタマイズできます:
if(!IS_POST) halt(‘ページが存在しません’);
echo '通常の送信';

作成方法: Conf/config.php: 'TMPL_EXCEPTION_FILE'=>'./Public/Tpl/error.html',
に追加 ファイルはエラー内容を受け入れます: ./Public/Tpl/error.html。ネイティブ PHP のみを作成でき、__APP__
などの定数がサポートされています。

//挿入された ID 値を返します。データベースは 1 から始まります
if(M(‘ユーザー’)->data($data)->add()){
$this->success('追加に成功しました','index');
}その他{
$this->error('追加に失敗しました');
}

*テンプレートに出力

1、データの準備
方法 1
$this->assign(‘変数名’, ‘変数値’)

方法 2
$this->変数名=’変数値’;

方法 3 (新しいバージョン、短縮コード)
$this->assign(‘変数名’, ‘変数値’)->display();

方法 4 (1 行で実行)
$this->assign('data',M('User')->select())->display();

2、テンプレート出力
方法 1 (. 構文によって、オブジェクトか配列かが決まります。構成パラメーター: TMP_VAR_IDENTIFY=>'array' なので、速度を向上させるために配列とみなされます)

{$v.username}—{$v.password}—{$v.time|date=’y-m-d H:i:s,###’}

関数{:phpinfo()}を使用します

方法 2
ボリスト

*グループ化されたアプリケーションのフロントエンドとバックエンドで使用されるエントリ ファイルは 1 つだけです
idnex.php (デフォルト)
定義('APP_NAME','アプリ');
定義('APP_PATH','./App/');
定義('APP_DEBUG','TRUE');
‘./ThinkPHP/ThinkPHP.php’ が必要です;
?>

App/Conf/config.php
配列を返します(
//グループ化を有効にする
「APP_GROUP_LIST」=>「インデックス,管理者」,
「DEFAULT_GROUP」=>「インデックス」,

‘TMPL_FILE_DEPR’=>’_’, //デフォルトのテンプレート区切り文字はフォルダー形式ではなく _ です
);

カスタムコントローラー
1. アクションフォルダー内の元のデフォルトコントローラーを削除します
2. フロントエンドとバックエンド (Index Admin など) の 2 つのフォルダーを作成します
アクセス: フロントエンド ホスト/index.php/Index バックエンド ホスト/index.php/Admin

カスタマイズされた構成ファイル (相互にアクセスできませんが、パブリック構成は相互にアクセスできます)
1. host/App/Conf/ に 2 つのフォルダー、つまりフロントエンドとバックエンド (Index Admin など) を作成します
構成: フロントエンドホスト/App/Conf/Index/config.php
バックエンドホスト/App/Conf/Admin/config.php

カスタム機能
1. host/App/Common/ に 2 つのフォルダー、つまりフロントエンドとバックエンド (Index Admin など) を作成します
構成: フロントエンドホスト/App/Common/Index/function.php
バックエンドホスト/App/Common/Admin/function.php

注: グループ化されたアプリケーションは、{:U("form_save")} の直接使用、つまり、次のように記述された現在のコントローラーの現在のメソッドをサポートしていません。 {:U(“/インデックス/インデックス/form_save”)}
※グループ応募【完了】

**独立したグループ構成

オン:
1.まずアプリケーショングループを設定します
2. パラメータを追加します
'APP_GROUP_MODE'=>1, //独立したグループ化を有効にする
‘APP_GROUP_PATH’=>’Modules’, //デフォルトのグループパス、デフォルト: モジュール

一般的に使用されるパス変数: __ROOT__.’/’.APP_NAME.’/’.C(’APP_GROUP_PATH’).’/’.GROUP_NAME.’/’

新しいディレクトリ構造:
ThinkPHP //システムディレクトリ
アプリ //プロジェクトディレクトリ
パブリック //静的ファイルディレクトリ
Index.php //すべてのプロジェクトのエントリーファイル

アプリ:

モジュール //プロジェクト モジュール ==>Admin/Action,Tpl,Model,Conf,Common;
共通 //PublicCommon
会議 //公開会議
Lib //パブリックライブラリ
Tpl //パブリック Tpl
ランタイム //ランタイム

公開:

CSS JS画像

**JQuery の非同期送信

$('#send-btn').click(
関数(){
var username=$(‘input[username=username]‘);
var パスワード=$('入力[パスワード=パスワード]');

if(ユーザー名.val()==”){

alert('ユーザー名を空にすることはできません');
ユーザー名.focus();
// ユーザー名にフォーカスを当てます
戻ります;
}

if(password.val()==”){

alert('パスワードを空にすることはできません');
パスワード.focus();
// ユーザー名にフォーカスを当てます
戻ります;
}

//非同期送信を開始します (php は別の js ファイルではなく、テンプレート内で解析する必要があります)

var sendUrl='{:U("インデックス/インデックス/フォーム保存",",")}';

$.post(sendUrl,{ユーザー名:ユーザー名.val(),パスワード:password.val()},関数(データ){},’json’);

}
);

**phpの非同期フォーム処理:

パブリック関数 form_save(){
//var_dump($this->isAjax()) //データが送信されているかどうかを判断します
; //var_dump(IS_AJAX); //【新バージョン】データ送信の有無を判定
if(!$this->isAjax()) halt ('ページが存在しません');
$data=配列(
「ユーザー名」=>$this->post(「ユーザー名」),
‘パスワード’=>$this->_post(‘パスワード’),
「時間」=>time()
);
//p($data);

}

クラス11以降の記録はありません

*モジュールの紹介
1. 検証コード モジュールはコア パッケージには含まれていません。手動で追加して ThinkPHP/Extend/Library/ORG/Util/Image.class.php
に配置する必要があります。 import('ORG.Util.Image');
Image::BuildImageVerify(4,5,’png’);
訪問: このメソッドアドレスで十分です
確認コードを変更し、JS 乱数関数を使用します: Math.random();
注: 擬似静的サフィックスが表示される場合は、{:U(‘Admin/Login/index’),”,”} に 2 つの空のパラメーターを追加する必要があります
ブレンドモードでは大文字と小文字が区別されます

認証コードのバックグラウンド認証
if(md5($_POST[code])!= session('verify')){ $this->error('検証コードエラー');}
if(md5($this->_post[code])!= session('verify')){ $this->error('検証コードエラー');}
if(I('code','','md5')!= session('verify')){ $this->error('検証コード エラー');}

2、ページングクラス
import('ORG.Util.Page'); //クラスをインポートします
$max=M('User')->count() // アイテムの総数をクエリします
; $page=新しいページ($max,5,'','インデックス/インデックス/インデックス/p/');
//オブジェクトをインスタンス化します。パラメーター: 1 アイテムの合計数、2 1 ページあたりのアイテム数、3 ページ ジャンプ パラメーター、4 設定された URL パス、アプリケーション グループ名が少ないため、グループ化するときに便利です
$limit=$page->firstRow.','.$page->listRows; //最初のページと総ページ数を取得し、制限値として設定します
$m=M('User')->order('time DESC')->limit($limit)->select(); //最初のページのデータを検索します
$this->User=$m; // foreach トラバーサルのフロントエンド テンプレートにデータを割り当てます
$this->page=$page->show(); // ページングコンテンツをフロントエンドテンプレートに割り当てます

テンプレート内のページネーションデータ呼び出し: {$page}

**セッション データベースに保存
1. 構成ファイルを追加します: 'SESSION_TYPE'=>'Db',

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/878455.html技術記事 ThinkPHP フレームワークの紹介 ThinkPHP は、無料でオープンソースの高速でシンプルなオブジェクト指向の軽量 PHP 開発フレームワークであり、Apache2 オープンソース契約に基づいてリリースされました。
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート