ホームページ >バックエンド開発 >PHPチュートリアル >discuz のデータベース呼び出しメカニズムとは一体何ですか?

discuz のデータベース呼び出しメカニズムとは一体何ですか?

WBOY
WBOYオリジナル
2016-06-23 13:48:511242ブラウズ

100 点を与えます
最近 discuz を勉強したところ、公式パッケージの多くの HTML テンプレートにはデータベースを呼び出すステートメントが含まれていないことがわかりました。これについては少し混乱しています。 call. ループとは何ですか?
しかし、実際はその逆であり、呼び出しのメカニズムがわかりません
より分かりやすく説明するために例を示します。次のループ:

<!--{loop $trades[$tid] $key $trade}-->			<li class="cl">				<!--{if $trade[aid]}-->					<a href="forum.php?mod=viewthread&do=tradeinfo&tid=$tid&pid=$trade[pid]" target="_blank"><img src="$trade[aid]" width="80" alt="$trade[subject]" /></a>				<!--{else}-->					<a href="forum.php?mod=viewthread&do=tradeinfo&tid=$tid&pid=$trade[pid]" target="_blank"><img src="{IMGDIR}/nophoto.gif" width="80" alt="$trade[subject]" /></a>				<!--{/if}-->				<!--{if $trade[price] > 0}-->					&yen; $trade[price]				<!--{/if}-->				<!--{if $trade[credit] > 0}-->					<!--{if $trade[price] > 0}-->{lang additional} <!--{/if}--> $trade[credit] {$_G[setting][extcredits][$_G['setting']['creditstransextra'][5]][unit]}{$_G[setting][extcredits][$_G['setting']['creditstransextra'][5]][title]}				<!--{/if}-->				<p><a href="forum.php?mod=viewthread&do=tradeinfo&tid=$tid&pid=$trade[pid]" target="_blank">$trade[subject]</a></p>			</li>		<!--{/loop}-->


ループ语法是这样的:If(is_array($abc)) {
Foreach($abc AS $key => $val) {
}

所上面那段代码中$trades[$tid]肯定これは配列なので、このテーブルの PHP ファイルはどのように取得されるのでしょうか。また、この HTM テンプレートはどの PHP を取得するかをどのように認識するのでしょうか。データはどうですか?
もちろん、discuz のデフォルトのパッケージは公式が作成したものであると言う人もいますが、プログラムを拡張する必要があることを忘れないでください。ユーザーがテーブルを書いてそこに追加する場合はもちろん、htmにSQLを書くことも可能ですが、公式が書いていないのでルールがあるはずだと思いますが、公式は書いていません。では、このメカニズムは何ですか?
説明するには、大げさにしないでください。
データベースが接続され、モデルに読み込まれます。 , $trades[$tid] はすでに配列になっていますが、もちろん直接ループすることもできます。

たとえば、forum.php はデータの取得用、forum.html は表示用です。

php にはループはありません。ループは discuz のコードであり、テンプレートは事前に編集されています。discuz のルート ディレクトリ/data/template に、foreach になる多くのコンパイル済みファイルが表示されます。

htm テンプレートはどうでしょうか。 PHP からどのデータ テーブルが取得されるか知っていますか? リンクに従ってこれを見つけることができます
例: forum.php?mod=viewthread&tid=1

forum.php はルート ディレクトリ (およびホーム .php) のエントリ ファイルです

mod=viewthread、最後の文は別のファイルを紹介しています (mod によると、インポートされたファイルは /source/module/forum/forum_viewthread.php です)

forum_viewthread.php このファイルは、論理処理、データベースのクエリ、整理のための php ページです。変数...の処理はこのファイル内で全て完了です
データを整理したら、include templateを使ってhtmファイルを導入し、その中でloopなどを実行します
上記の方法でdiscuzのコード実行シーケンスを追跡することができます

あなたが見ているのは HTML テンプレートであり、php スクリプトではないことも私は知っています
一般的な展開について学ぶには、Baidu で DZ の簡単なマニュアルを検索してください

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