検索
ホームページphp教程php手册PHP5でMVC構造を学ぶ

php5

1. はじめに

現在、WEB アプリケーションを開発する際に最も一般的な方法の 1 つは、「MVC」構造を使用して WEB アプリケーションを開発することです。これにより、プログラムの設計がより便利になります。 「MVC」とは何ですか?簡単に言うと「Model」「View」「Controller」の組み合わせ、つまりすべて「3層」の抽象構造です。もちろん、ここで言う「MVC」はWEB上のアプリケーション向けです。 「コードとページ設計の分離」は、Java Servlet/JavaServer Pages テクノロジーを使用した「Struts」で最も明確に表現されています。興味のある方は、http://jakarta.apache.org/strutsLook を参照してください。この設計パターンにより、プログラマーはコードの設計、作成、デバッグに集中でき、Web デザイナーは特定の機能の実現に注意を払うことなく、より多くの時間を設計に投資できるため、この分業は大規模プロジェクトに最適です。またはエンタープライズレベルの分散アプリケーション開発。

PHP5 のリリースから、そのオブジェクト指向機能がますます充実していることがわかります。Zend Optimizer と組み合わせれば、PHP を使用して大規模な商用 Web サイトや分散エンタープライズ アプリケーションを開発できるようになりました。達成されました。

PHPの「MVC」デザインパターンを使ってWEBアプリケーションを開発するにはどうすればよいでしょうか? 1 つのこと (コードとページのデザインは分離されている) を覚えておいて、簡単な例を使ってそれを説明します。たとえば、データベースからメンバー情報をクエリして Web ページに表示したい場合は、次の 2 つの点を考慮する必要があります。 1. データベースに接続し、メンバーの情報を取得します。 2. Web ページにメンバー情報を表示し、データベースに接続します。これを「DB」クラスと呼びます。このとき「Model」を書く必要があります。「DB」クラスを操作してデータを取得するプログラムが役割を果たします。このプログラムは、「POST」または「PUT」データを受け取ります。クライアントにアクセスし、「DB」クラスを呼び出してデータを取得し、これらのデータを「コントローラー」に格納し、最後にそのデータを「ビュー」に渡して、上記の分析から特定のレイアウト形式に従って表示します。ここではテンプレートがその役割を果たしていることがわかります。もちろん、テンプレートクラスだけでは MVC とは言えません。詳細については、「JSF」を参照してください。

「3t」は主に「Controller」のデータを読み込み、最後にいくつかの簡単なテンプレート構文を通じてデータを表示するテンプレートクラスです。

解析速度が速く、必要に応じてHTMLキャッシュまたはPHPキャッシュを使用することもでき、高速で安定したWEBアプリケーションを実現することもできます。有名なテンプレートクラス「SMARTY」は、インストールや操作が簡単で、データの表示に関しても「PHPの文法」や「JavaBeans」に似ており、必要な機能を追加することができます。オープンソースなので、近日中にプラグイン機能もサポートされる予定です

拡張性が高く、最新の PHP5 をサポートしているため、いつでも使用できます。 PHP バージョン >=4.0.6. もちろん、サーバー上のファイルを操作する権限が必要です

それは強力で、テンプレートのマルチレベルのネスト、マルチレベルの配列ループなどをサポートしています

もちろん、このテンプレートには多くの改善の余地があります。継続的に改善する前に、さまざまな環境でテストして使用する必要があります。現在、

II 環境でのみテストされています。 インストール

1. 解凍後、次のディレクトリ構造が表示されるはずです:

./3tx.x/cmp/ コンパイルされたファイル (このフォルダーが読み取り可能および書き込み可能であることを確認してください)
./3tx.x/tpl/ テンプレート ファイル (テンプレート ファイルはここに配置されます。このフォルダーが読み取り可能であることを確認してください)
./3tx.x/che/ キャッシュ ファイルが保存されているフォルダー (このフォルダーが読み取り可能および書き込み可能であることを確認してください)
./3tx.x/ttt/ ttt.php 3T テンプレート クラス ファイル
./3tx.x/ プログラム ファイル (作成したプログラムはここに配置されます)

2. PHP バージョンを PHP4.0.6 より低くすることはできません。全体的なパフォーマンスを考慮して、PHP バージョンを 4.3 .0 以上にアップグレードすることをお勧めします。プログラムの内容が大幅に改善されます

3. 実行時に変数が定義されていない場合は、プログラムの前に「error_reporting(7);」関数を追加してください

3. 構文

テンプレートの簡単な構文説明 :
一般的に、左中括弧「{」と右中括弧「}」は、テンプレート構文の先頭と末尾として使用されます。もちろん、「[」や「]」などのカスタム区切り文字も使用できます。次の手順では中括弧を使用します。区切り文字について説明します

(注: 以下の [tplCode] と [/tplCode] の間のコードはテンプレート構文コードです)

1. テンプレート ファイル内で次のような PHP コードを使用します:
[tplCode]
{php }
$i = 3;
echo $i;
{/php}
[/tplCode]
「example6」を参照してください

2. 以下のように、テンプレートで foreach ループを使用します。


最初の使用法 (loop Array $) a、PHP の foreach に相当します ($a as $k=>$v)....)
[/tplCode]
{foreach:$a,$k,$v}
$v = {$v}

{/foreach}
[/tplCode]

2 番目の使用法 (ループする回数を設定できます。配列 $a に 15 個の要素がある場合、次のループは最初の 5)
[tplCode]
{foreach:$a,$k,$v,5}
$v = {$v}
のみを取ります。
{/foreach}
[/tplCode]

3 番目の使用法 (ループする回数を設定できます。配列 $a に 15 個の要素がある場合、次のループは 3 番目の要素から始まり、5 番目の終わりまで到達します)要素)
[tplCode]
{foreach:$a,$k,$v,3,5}
$v = {$v}

{/foreach}
[/tplCode]
」を参照してください。 example1" と "example3" では、"foreach" ループで多次元配列を使用できます。詳細については、"example10" を参照してください

3. テンプレートで次のような IF ステートメントを使用します。

最初の使用法
[tplCode]
{if :$a == "hello"}
変数 $a の値は "hello" です
{/if}
[/tplCode]

2 番目の使用法
[tplCode]
{if:$a == true }
変数 $a は true
{else}
変数 $a は true ではありません
{/if}
[/tplCode]

3 番目の使用法
[tplCode]
{if:$a == 2}
変数 $ a 変数 $a の値は 2
{elseif:$a == 3}
変数 $a の値は 3
{/if}
[/tplCode]
詳細については、「example2」と「example6」を参照してください。具体的な使用方法

4. テンプレートには、次のようなテンプレート ファイルが含まれています。含まれるテンプレート ファイルは同じディレクトリにある必要があります

5 。次のような PHP ファイルをテンプレートに含めます:
{tplCode}
{includephp:head.php}
{/tplCode}
PHP ファイル「head.php」ここに含まれており、ファイル「head.php」は現在のプログラム ディレクトリにあります
含まれるファイルについては「example8」を参照してください

6.
{tplCode}
{date:Y-m-d などの時間をテンプレートに出力します。 H:i:s}
{/tplCode}
に「Y-m-d H:i:s」が続く文字列は、PHP の標準タイムスタンプです。具体的な使用方法については、PHP マニュアルを参照してください。
具体的な使用方法については、「example7」を参照してください。 "

7. テンプレートで数学関数を使用します

最初の使用法は、結果を直接出力することです
{tplCode}
{ math:3*2-5}
{/tplCode}

2 番目の使用法は、指定された変数に値を代入します
{tplCode}
{math:3*2-5,$result}
{/tplCode}

3 番目の使用法、指定された変数に値を割り当て、3 番目のパラメーターはすぐに出力するかどうかを設定し、「Y」出力に設定します。 "N" は出力されません
{tplCode}
{math:3*2-5,$result,Y}
{ /tplCode}
具体的な使用方法は「example4」を参照してください

8. テンプレート内で FOR ループを使用します。
次のコードに示すように
[tplCode]
{for:5,1000,1,$i}
{$i}
{/for}
{/tplCode}
パラメータの説明:
5:ループが 5 から始まることを示します
1000: ループが 1000 で終了することを示します
1: 各ループの増分が 1 であることを示し、$n++ に相当します
$i: 各サイクルの値を表します
(上記の定数は「5」、「1000」、「1」は、{for: $num、$max、$step、$ i} のような変数で置き換えることもできるため、変数は「assign()」メソッドを使用して割り当てられます。プログラム内)
(理解のために) 次のコードも参照してください:
[tplCode]
{for:500,30,-2,$i}
500 からループが開始され、終了するまで毎回 2 ずつ減少します。現在のループ値は次のとおりです: {$i}

{/for}
{/tplCode}
具体的な用途 「example2」、「example11」を参照してください

9. テンプレートで Email タグを使用します
最初の使用法:
[tplCode]
{email:redhat@hnwj.net}
[/tplCode]
2 番目の使用法:
[tplCode]
{email:redhat@hnwj .net,Redhat のメール アドレス}
[/tplCode]
3 番目の使用法:
[tplCode]
{email:redhat@hnwj.net,これは「Redhat」のメール アドレスです これはスタイル化されていますclass=m,m}
[/tplCode]
具体的な使用方法については、「example5」を参照してください

10. テンプレートで変数を定義します
[tplCode ]
{assign:$tplVar、これは定義した変数 はテンプレートまたは PHP コードで出力できます}
[/tplCode]
具体的な使用法については「example6」を参照してください。

11. 他の構文と関数はまだ開発中です。 ..
良いコメントやアイデアがありましたら、http://2002.buyionline.net/2002/gbook.php にお知らせください。バグを見つけた場合は、時間内にメッセージを残してください。ありがとうございます。


注:
1. このテンプレートは、多層のネストされたテンプレートまたは PHP ファイルをサポートし、多層の foreach または for ループをサポートします
2. 実際の使用スキル
実際の使用中に $cmpCheck 属性を設定すると、それ以外の場合、PHP プログラムは、コンパイルされた PHP ファイルの存在時間に基づいて再コンパイルするかどうかを決定します。通常、このプロパティのデフォルト値は true に設定されます。使用中 (プロセスを高速化できます)
次のようなメソッドを設定します: $tttObj->setCmpCheck(true);
3. このプログラムの最大の欠点は、表示される構文エラー情報を正確にキャプチャできないことです。プログラム内では
4. 現時点ではキャッシュ機能はサポートされていません。ご意見がありましたらお知らせください:-)
5. 混合モードはテンプレートを PHP ファイルにコンパイルするために使用されるため、間違えないでください (もちろん、テンプレートは大文字と小文字の一貫した記述をサポートしています。つまり、{math:38*7} と { を記述することになります) MatH: 38*7} も同じ効果があります)、「{foreach:$data,k,$v}」と入力すると、コンパイルは成功しますが、先頭に 1 つがないため、実行時に構文エラーが発生します。 「k」「$」記号の各行を構文解析してエラーを検出するコードを既に作成しましたが、コードが数百行に達すると、コードが比較的小さい場合、時間がかかることがわかりました。わかりましたが、コードが増えるとパフォーマンスが低下します。さらに、PHP 自体には非常に優れたエラーメッセージプロンプトがあるので、コードの各行を分析しませんでした。上記のロゴでは、パラメーターが二重引用符で囲まれていないことに注意してください (条件判定ステートメントを除く)。

4. PHP ファイルを作成します (最初に名前を付けます)。 php を現在のディレクトリ (つまり "./") に保存し、その内容を次のようにします:
require_once "./ttt/ttt.php";//クラス ファイルを導入します
$ttt = new TTT( );//3T テンプレート クラスのインスタンスを初期化します
$ttt->setTplDir(" ./tpl/");//コンパイルする必要があるテンプレート ファイルが保存されているディレクトリ
$ttt->setCmpDir(" ./cmp/");//コンパイルしたファイルが格納されているディレクトリ
$ttt->assign('title ','空の色');//変数を設定します
$ttt->assign(' content','青、良い天気、雲一つない、晴れ');//変数を設定します
$ttt-> assign('foot','Welcome welcome');//変数を設定します
$ttt->display(' first.tpl');//Output
?> 2. tpl ファイルを作成します (「first .tpl」という名前で、ディレクトリ「./tpl/」に保存されます)。内容は次のとおりです。 ;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">



{$title}


{$content}



{$ foot}



3.
声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

SecLists

SecLists

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

DVWA

DVWA

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

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません