2009-06-04 9 views
4

私は軽量でPHPベースのレイアウトフレームワークを探しています。 Zend Frameworkがレイアウトを使用する方法と同様に、私はレイアウトテンプレートを作成し、必要なページのコンテンツのみを含めたいと思います。軽量、PHPベース、レイアウトフレームワーク...何か知っていますか?

<html> 
<head> 
<title><?= $pageTitle ?></title> 
</head> 
<body> 
<?= $content ?> 
</body> 
</html> 

誰でもこのことを知っていますか?私はZend Frameworkを使用しますが、それは達成したいことにはあまりにも多くのことです。

答えて

2

私は実際にeuropaphp.orgで例と完全なドキュメントと共にリリースしようとしています。これは、規約やコーディング標準のZend Frameworkと非常によく似ています。私はそれが終わったら何かを掲示するでしょう。おそらく来週中に。

[http://code.google.com/p/europa/source/browse/#svn/trunk/Sandbox - デフォルト] [1]でコードを取得できます。

このリンクをクリックするとサンドボックスの最新のsvnが表示されます。このサンドボックスは、ダウンロードして設定を行わずに使用することができます。

現在、他のほとんどのPHPフレームワークよりも高速です。

[1]:http://code.google.com/p/europa/source/browse/#svn/trunk/Sandbox - デフォルト

+0

最後に、europaphp.orgをチェックアウトしました。まさに私が望んでいたもの! Zend Frameworkの使い方と同じように見えます。スマートには – Andrew

1

FryPHPは、それが得られる程度の軽量です。

33

のための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です。

+0

cool!ご協力いただきありがとうございます! – Andrew

3

超軽量が必要な場合は、output bufferingと組み合わせてauto-prependファイルを使用して、必要なものを構築できます。まず第一に、あなたはあなたの前付加を設定し、ファイルを追加する必要があります - (あまりにも、あなたはおそらくプリペンドを作成し、訪問者に読めないファイルを追加したいと思う)あなたのの.htaccessファイルに以下の行を置く:

php_value auto_prepend_file prepend.php 
php_value auto_append_file append.php 

は、その後、あなたのprepend.phpファイルに、あなたは出力のバッファリングをオンにすることをお勧めします:

<?php 
ob_start(); 

append.phpで、出力バッファの内容を、明確につかむことをお勧めしますバッファを読み込み、tの他の処理を行いますあなたが望むコンテンツ(この例では、私はデフォルトのページタイトルを設定します)。

<?php 
    if (!isset($page_title)) { 
     $page_title = 'Default Page Title'; 
    } 

    $content = ob_get_contents(); 
    ob_end_clean(); 
?> 
<html> 
    <head> 
     <title><?php echo $page_title; ?></title> 
    </head> 

    <body> 
     <?php echo $content ?> 
    </body> 
</html> 

これ以降、各ページを正常に書き込むことができます。ここでは例のindex.php

<?php 
    $page_title = "Index Page!"; 
?> 

<h1>This is the <?php echo __FILE__; ?> page</h1> 

...と途中で何か面白いものない例other.phpです:

<?php 
    $page_title = "Secondary Page!"; 
?> 

<h1>This is the <?php echo __FILE__; ?> page</h1> 
<p>enjoy some PHP...</p> 

<ol> 
    <?php for ($i = 1; $i <= 10; $i++) : ?> 
     <li><?php echo "$i $i $i"; ?></li> 
    <?php endfor ?> 
</ol> 

をすれば完了です。前置きでDB接続を初期化するなど、これで少し成長することができますが、ある時点では、パスとファイルへのURLの固定マッピングから抜け出すより抽象的なシステムに移行したいと思うかもしれません。

+0

私はこれが好きです。シンプルでわかりやすいPHPを使い、私が望むように動作します。私の質問:htaccessを使わずにこれを達成する方法はありますか?また...私はappend.phpが "レイアウト"であると仮定しています。これは私がいつもこのレイアウトを使いたいと仮定しています。複数のレイアウトでこれを行う方法はありますか?レイアウトなしでもいいですか?私はURLの固定マッピングに気にしませんが、それは私には不思議です...これはサブディレクトリで動作しますか? – Andrew

+0

htaccessではなく、PHP.iniのprependファイルとappendファイルを設定することができます。レイアウトを変更したい場合は、別のレベルのインダイレクションでそれを行い、各ページにページタイトルとともに '$ layout'変数を定義し、appendファイルに必要なレイアウトをrequire()することができます。プリペイント&アペンドファイルへのパスが適切に設定されている限り(「require()関数で呼び出されたかのようにファイルがインクルードされているので、include_pathが使用されている」というマニュアルでは、ファイルに問題はありませんサブディレクトリにあります。 –

1

Limonadeもない、厳密なレイアウト...役に立つかもしれません。

1

年齢はSmartyです。 成熟し、積極的に維持され、広くサポートされています。

とにかく、あなたはここでテンプレートエンジンの全範囲を見つけることができます:あなたは言語の列をクリックした場合 http://en.wikipedia.org/wiki/Template_engine_(web)

は、あなたが簡単にPHPのために利用できるものを見るだろう、とエンジンが比較する方法。

+3

-1。あまりに古くても、利用できるエンジンはずっと優れています。 –

+0

うんざりスマイリーは良くありません - http://nosmarty.net/ – raspi

1

CodeIgniterはIMHO非常に使いやすく、MVCのアプローチを使用しているため、ファイルをビューとして出力し、フットプリントが小さいと言います。また、template parserを搭載しています。

乾杯、

関連する問題