のためのMVCフレームワーク。 (PHP ははテンプレートエンジンである。)
function template($file, $vars) {
ob_start();
if(count($vars) > 0) { extract($vars); }
include 'views/'.strtolower($file).'.php';
return ob_get_clean();
}
はどのちなみに、あなたは次のことを行うことができます。
echo template('layout', array('content' => template('page', $myData)));
さらに、別のテンプレート/レイアウトエンジンを使用しても構いませんが、PHP自体が単なる6行で十分な場合は、
編集:
はおそらく、私はこれがどのように機能するかと明確ではありませんでした。
template()
は、2番目のパラメータとして配列オブジェクトを使用してテンプレート(組織作業用のサブディレクトリも)の名前で呼び出されます。与えられた変数が空でない場合(template('index',null)
など)、配列は連想配列として扱われ、すべてのキーは値を含む変数になります。
template('my_template', array(
'oranges' => 'apples'
));
そして、 "ビュー/ my_template.php" は次のとおりです:
だからロジックがなるように
<html>
<head>
<title>Are apples == <?= $oranges ?>?</title>
</head>
<body>
<p style="color: <?= $oranges == 'oranges' ? 'orange" : 'darkgreen' ?>">
Are apples == oranges?
</p>
</body>
</head>
、変数$oranges
はPHPを使用するたびからエクスポートされたデータを取得します配列$vars['oranges']
。
したがって、すべての出力はob_get_clean()
で取り込まれ、文字列として返されます。この文字列を出力するには、echo
またはprint
だけを入力するか、配列にコンテンツを渡してレイアウトに渡します。これを理解すれば、私が書いたものを取り出してレイアウトを作ることや、JSONを出力するロジックを持つページを作ることは非常に簡単です。
この回答を破棄する前に試してみることをおすすめします。それはあなたの上で成長する傾向があります。
編集2:私は私のプロジェクトが使用するディレクトリのレイアウトを紹介し、要求通り
。他のMVCフレームワークは異なる構造を使用することに注意してください。しかし、私は私の単純さが好きです。セキュリティ上の目的のために
index.php
application/
framework.php
controllers/
welcome.php
views/
template.php
index.php
、私は効果的に隠された私のディレクトリを作るindex.php
スクリプトにjs/
またはcss/
のものを除き、すべての要求.htaccess
ファイルそのルートを持っています。もしあなたが望むのであれば、テンプレートを使ってCSSを作ることもできます。これは変数の使用などです。
template('template', array())
に電話をかけると自動的にファイル./views/template.php
がロードされます。名前にスラッシュを含めると、パスの一部になります。つまり、./views/posts/view.php
です。
編集3:あなたの更新のための
感謝。だからあなたは、適切なコントローラに、正しいURLを要求されたURLをルーティングするindex.phpファイルにいくつかのコードを持っている必要がありますか?これをいくつか見せていただけますか?また、あなたのビューがコントローラのディレクトリを映しているように見えません。あなたは、コントローラやビューにURLがどのようにマップされるのかをもう少し説明できますか? framework.phpには何がありますか?それは何をするためのものか?ありがとう!
私が示したコードは、Web開発のための私のプライベートフレームワークの小さな抜粋です。 I've talked already about potentially releasing itをデュアルライセンス、または商用利用のための寄贈品として販売していますが、短期間(15〜21日)は他人が書くことはできません。もしあなたが欲しいのであれば、read my source code on GitHub ...でも、まだアルファ素材であることを覚えておいてください。
ライセンスはCreative Commons SAです。
最後に、europaphp.orgをチェックアウトしました。まさに私が望んでいたもの! Zend Frameworkの使い方と同じように見えます。スマートには – Andrew