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()
1
2
3
ボリスト>
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.インポート
//デフォルトのフォルダーを変更し、basepath 属性を設定できます
3.ロード
//メソッドはインポートされたファイルの種類を自動的に検出できます
ブランチ構造
1.if
人間は泥でできている
女性は水でできています
未成年
青春
大人
>GT
== 等価
>= 例
!=neq
===ヘク
!== んへq
これがデフォルト値です
スイッチ>
ループ構造
1.for
表>
2.ボリスト
{$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. 使用スキル
他のテンプレート ファイルの内容もテンプレート ファイルのレンダリングに使用できます
これがレンダリング ページです。 ! !
{__コンテンツ__}

PHPSESSIONの障害の理由には、構成エラー、Cookieの問題、セッションの有効期限が含まれます。 1。構成エラー:正しいセッションをチェックして設定します。save_path。 2.Cookieの問題:Cookieが正しく設定されていることを確認してください。 3.セッションの有効期限:セッションを調整してください。GC_MAXLIFETIME値はセッション時間を延長します。

PHPでセッションの問題をデバッグする方法は次のとおりです。1。セッションが正しく開始されるかどうかを確認します。 2.セッションIDの配信を確認します。 3.セッションデータのストレージと読み取りを確認します。 4.サーバーの構成を確認します。セッションIDとデータを出力し、セッションファイルのコンテンツを表示するなど、セッション関連の問題を効果的に診断して解決できます。

session_start()への複数の呼び出しにより、警告メッセージと可能なデータ上書きが行われます。 1)PHPは警告を発し、セッションが開始されたことを促します。 2)セッションデータの予期しない上書きを引き起こす可能性があります。 3)session_status()を使用してセッションステータスを確認して、繰り返しの呼び出しを避けます。

PHPでのセッションライフサイクルの構成は、session.gc_maxlifetimeとsession.cookie_lifetimeを設定することで達成できます。 1)session.gc_maxlifetimeサーバー側のセッションデータのサバイバル時間を制御します。 0に設定すると、ブラウザが閉じているとCookieが期限切れになります。

データベースストレージセッションを使用することの主な利点には、持続性、スケーラビリティ、セキュリティが含まれます。 1。永続性:サーバーが再起動しても、セッションデータは変更されないままになります。 2。スケーラビリティ:分散システムに適用され、セッションデータが複数のサーバー間で同期されるようにします。 3。セキュリティ:データベースは、機密情報を保護するための暗号化されたストレージを提供します。

PHPでのカスタムセッション処理の実装は、SessionHandlerInterfaceインターフェイスを実装することで実行できます。具体的な手順には、次のものが含まれます。1)CussentsessionHandlerなどのSessionHandlerInterfaceを実装するクラスの作成。 2)セッションデータのライフサイクルとストレージ方法を定義するためのインターフェイス(オープン、クローズ、読み取り、書き込み、破壊、GCなど)の書き換え方法。 3)PHPスクリプトでカスタムセッションプロセッサを登録し、セッションを開始します。これにより、データをMySQLやRedisなどのメディアに保存して、パフォーマンス、セキュリティ、スケーラビリティを改善できます。

SessionIDは、ユーザーセッションのステータスを追跡するためにWebアプリケーションで使用されるメカニズムです。 1.ユーザーとサーバー間の複数のインタラクション中にユーザーのID情報を維持するために使用されるランダムに生成された文字列です。 2。サーバーは、ユーザーの複数のリクエストでこれらの要求を識別および関連付けるのに役立つCookieまたはURLパラメーターを介してクライアントに生成および送信します。 3.生成は通常、ランダムアルゴリズムを使用して、一意性と予測不可能性を確保します。 4.実際の開発では、Redisなどのメモリ内データベースを使用してセッションデータを保存してパフォーマンスとセキュリティを改善できます。

APIなどのステートレス環境でのセッションの管理は、JWTまたはCookieを使用して達成できます。 1。JWTは、無国籍とスケーラビリティに適していますが、ビッグデータに関してはサイズが大きいです。 2.cookiesはより伝統的で実装が簡単ですが、セキュリティを確保するために慎重に構成する必要があります。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

ホットトピック









