2012年12月11日 星期二

如何撰寫好看又好維護的PHP?


工作這幾個月來,看同事的程式碼,慢慢對網頁程式有些瞭解了,前端用HTML拼湊我要呈現的東西,用CSS來讓畫面更有型,更美觀,用JavaScript讓網頁可以動態、根據不同狀況來產生不同網頁物件,或捕捉事件來控制網頁物件。而PHP用來在後端跟Server互動,比方根資料庫互動,或是跟檔案互動。而PHP最終目的也是要呈現資料給使用者看,所以PHP除了當純提供function,提供變數之外,本身也可以是個HTML,只是,他的副檔名必須是.PHP,這個概念,跟ASP差不多。

而程式跟HTML怎麼結合呢,目前看同事的寫法有兩種,一種是以HTML為主體,然後PHP是個區段,第二種,是PHP為主體,而HTML則透過ECHO方式吐出來,而前同事似乎比較喜歡第二種寫法(沒有批評的意思,只是從結果論)。

我個人喜歡第一種風格,原因是


1.以HTML為主體,可以直接把個PHP檔在Dreamwave開啟,看到確切的排版,如果以PHP為主體,你只能看到一片空白。


2.在瀏覽器進入Debug模式之後(通常按F12),如果用HTML為主體,則可以正常的單步看每行HTML的TAG有沒有寫錯,或是Script有沒有寫錯,或PHP有無正確(某些瀏覽器會直接看到PHP執行過後的數值而已),但是如果以PHP為主體,那麼ECHO所吐出的會變成一大行,根本就無法單步Debug了。




----------------方法一:HTML為主體----------------

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">


<?php
$user=$_GET['session'];
$session_path="/root/config/webaccess/httpd/".$user;
session_save_path($session_path);
session_start();
?>


<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <link rel="stylesheet" type="text/css" href="style/manage-style.css"/>
    <script type="text/javascript" src="js/jquery-1.7.1.min.js"></script>
    <title>我的網頁</title>
</head>

<body>
    
    <div class="DivContent">    
        <label class="Lbl_Title">測試<?php  echo $session ?></label>
    </div>

</body>
</html>






----------------方法二:PHP為主體----------------


echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">'


$user=$_GET['session'];
$session_path="/root/config/webaccess/httpd/".$user;
session_save_path($session_path);
session_start();



echo '<head>';
echo '<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>';
echo '<link rel="stylesheet" type="text/css" href="style/manage-style.css"/>';
echo '<script type="text/javascript" src="js/jquery-1.7.1.min.js"></script>';
echo '<title>我的網頁</title>';
echo '</head>';

echo '<body>';    
echo '    <div class="DivContent">';
echo '        <label class="Lbl_Title">測試 $session</label>';
echo '    </div>';

echo '</body>';
echo '</html>';



我不是很明白,會有人喜歡第二種嗎?或是有什麼理由要寫成第二種呢?目前只覺得,除非為了省時間,偷懶XD

沒有留言:

張貼留言