-4

PHPページで動的コンテンツを作成する最良の方法は何か疑問があります。私はこのようなことをしなければなりません:

------------------------------
|           Header           |
------------------------------
|      menu    |  Dynamic    |
|              |  content    |
------------------------------

このコードをインデックス ページの html コンテンツの間に配置しました。

<?php
    if(isset($_GET["page_content"]))
        include_once 'app/view/'.$_GET["page_content"].'.php';
?>

これには、インデックス ページ内の html の一部が含まれます。これにより、「動的」になります。一方、ページのヘッダーとフッターを別々に考えて、他のページに含めます。

これらのソリューションはより良いものになると思いますが、最善のアプローチが何であるかはわかりません。

(単一ページのアプリケーションを作成せずに、これをphpで解決したいと思います)

4

2 に答える 2

2

テンプレートと動的コンテンツを作成するには、いくつかの良い方法と悪い方法があります。まず、コードをテンプレート、データ処理、およびこれら 2 つの間の接続に分割する必要があります。

Model View Controllerはこれに最適です。

ビューには、純粋な html + php または smarty 、 phpsavant などのテンプレート システムのいずれかを使用できます個人には、簡単で非常に強力なので smarty を使用します。

MVC を使用したくない場合は、たとえば AJAX を使用して独自のシステムを作成できます。このシステムでは、メニュー項目をクリックした後に ajax 関数を作成する必要があります。

クライアント側で実行したい場合にアクセスするリンク

最も簡単な解決策はインクルードを使用することですが、確実にインクルードで$_GETを使用してはいけません。より良い方法は、ファイルをある種の配列に配置し、たとえば $_GET にこの配列へのキーを含めることです。

$mods = array("music", "download", "main");

if(in_array($_GET['mod'], $mods))
{
   include('mods/'.$_GET['mod'].".php");
} 

ここにいくつかの preg_match を追加して、mod に小文字のみを含めるようにすることもできます/[az]+/

他のより良い解決策

$mod = intval($_GET['mod'], 0)
$mods = array(1 => "music", 2 => "download", 3=> "main");
if(!$mod) throw new Exception("Bad module");
if(array_key_exists($mod, $mods)) 
   include("mods/".$mods[$mod].".php");
else 
   if(!$mod) throw new Exception("The module does not exists");

ただし、最善の解決策は、 Zend Viewと呼ばれるこれを処理するクラスを既に作成している Zend などのフレームワークを使用することです。

于 2013-05-09T07:26:58.223 に答える
0

PHP で使用されるテンプレート システムを調べる必要があります。たとえば、SmartyZend_Frameworkは、テンプレートを使用する方法の一部です。

于 2013-05-09T07:18:54.083 に答える