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`
$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} | >

aphpDependencyInjectionContaineriSATOULTAINATINAGECLASSDEPTINCIES、強化測定性、テスト可能性、および維持可能性。

SELECT DEPENTENCINGINOFCENT(DI)大規模なアプリケーションの場合、ServicElocatorは小さなプロジェクトまたはプロトタイプに適しています。 1)DIは、コンストラクターインジェクションを通じてコードのテスト可能性とモジュール性を改善します。 2)ServiceLocatorは、センター登録を通じてサービスを取得します。これは便利ですが、コードカップリングの増加につながる可能性があります。

phpapplicationscanbeoptimizedforspeedandEfficiencyby:1)enabingopcacheinphp.ini、2)PreparedStatementswithpordatabasequeriesを使用して、3)LoopswithArray_filterandarray_mapfordataprocessing、4)の構成ngincasaSearverseproxy、5)

PHPemailvalidationinvolvesthreesteps:1)Formatvalidationusingregularexpressionstochecktheemailformat;2)DNSvalidationtoensurethedomainhasavalidMXrecord;3)SMTPvalidation,themostthoroughmethod,whichchecksifthemailboxexistsbyconnectingtotheSMTPserver.Impl

tomakephpapplicationsfaster、followthesesteps:1)useopcodecachinglikeopcacheTostoredscriptbytecode.2)最小化abasequeriesecachingingindexing.3)leveragephp7機能forbettercodeefficiency.4)

依存性注入(DI)は、明示的に推移的な依存関係によりPHPコードのテスト可能性を大幅に改善します。 1)DI分離クラスと特定の実装により、テストとメンテナンスが柔軟になります。 2)3つのタイプのうち、コンストラクターは、状態を一貫性に保つために明示的な式依存性を注入します。 3)DIコンテナを使用して複雑な依存関係を管理し、コードの品質と開発効率を向上させます。

DatabaseQueryoptimizationInpholvesseveralstrategESTOEnhancePerformance.1)selectonlynlynlyndorycolumnStoredatedataTransfer.2)useindexingtospeedupdataretrieval.3)revenmecrycachingtostoreres sultsoffrequent queries.4)


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

SublimeText3 中国語版
中国語版、とても使いやすい

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

Dreamweaver Mac版
ビジュアル Web 開発ツール
