私は、値が何であるかに応じて 'sk'を読み込み、別のメソッドを実行する1つのメソッドを持つクラスを使用します。
「写真」は、「ID」を読み取ってデータベースから写真を取得する方法です。次に、もう1つの方法、displayPage
を実行し、そのデータのページを表示します。
displayPage
メソッドはテンプレートに提供する "テンプレート"ファイル名と変数の配列を取ります。 smarty objectを設定し、変数を提供し、テンプレートを表示するように指示します。
テンプレート内には、サイト内のすべてのページにあるグローバルヘッダー用の別のテンプレートを含めると、スマートで動的な値を挿入し、グローバルフッタを含めるHTMLページコンテンツがあります。
私はこのシステムを多く簡略化していることに注意してください。大きなウェブサイトは単純なページを表示するだけのものが多いので(例:ログインしたユーザーが実際にページにアクセスできるかどうかを調べるなど)、実際のページではすべてのコードを書くのに1週間かかります。私はあなたが与えた例にアクセスできない)。
<?php
// profile.php
class ProfileController
{
public function run()
{
if ($_GET['sk'] == 'photos')
return $this->photosPage();
}
protected function photosPage()
{
$id = (int)$_GET['id'];
$result = mysql_query("select * from photo where id = $id");
$photo = mysql_fetch_object($photo);
$this->displayPage('view-photo.tpl', array('photo' => $photo);
}
protected function displayPage($templateFile, $templateVariables)
{
$smarty = new Smarty();
foreach ($templateVariables as $variableName => $variableValue) {
$smarty->assign($variableName, $variableValue);
}
$smarty->display($templateFile);
}
}
$conntroller = new ProfileController();
$controller->run();
そしてSmartyのコード:
<!-- view-photo.tpl -->
{include file='head.tpl'}
<h1>View Photo {$photo->name|escape}</h1>
<img src="{$photo->src|escape}" width="{$photo->width|escape} height="{$photo->height|escape}>
{include file='foot.tpl'}
あなたが実際にFacebookがどのように動作するかを知りたい、またはあなただけの似た何かを構築したいですか? Facebookはトラフィックの狂気の量を受け取るので、ウェブサイトは世界の他のサイトと同様に構築されていません。 URLに ".php"があるにもかかわらず、そのページがPHPコードをまったく実行しないと私は驚くことはありません。 –
実例、facebookとは関係ありません。それは約$ _GET [変数] /クエリ文字列であり、クエリ文字列に基づいてページを生成します。ページはどのように呼び出されますか?それは超簡単な質問です。私はおそらくそれを複雑にしています。 – Graham
これは本当に簡単な質問ではなく、全く異なる答えがたくさんあります。良いシステムを持つことが重要です。そうしないと、コードがバグになる傾向があります。 「profile.php」は、その1ページだけでなく、多くの異なるページを実行することになり、すべての異なるページのコードを分離する方法が必要であることを覚えておいてください。私は、私が働いているWebプログラミングビジネスで、私たちがどのようにして行動するかについて答えました。 –