旗標知識網 Banner Advertisement
     
 
旗標出版 l 特別企劃 l 主題學習 l 訂閱電子報 l 網路購書 l 讀者服務 l 更正下載 l 教師服務 l 旗標學校服務網 l 旗景 l RUN! PC
PHP Smarty 樣版引擎 -- 解決版面•程式碼糾纏不清的困境
PHP Smarty 樣版引擎 -- 解決版面•程式碼糾纏不清的困境

作者:Jace Ju, 作者的部落格: http://blog.yam.com/jaceju/
書號:F5471
附件:附1片光碟片
定價:480 元
 
 
 
 
 
 
 
程式開發與視覺介面的衝突

程式開發與視覺介面的衝突

與其談論過於艱深的原理, 筆者覺得直接用實例來帶領各位讀者瞭解樣版反而比較有效。例子雖然簡單, 但已去除了許多不必要的旁枝末節;您只要專注於這些例子的概念, 相信一定可以找到您手邊專案的影子。

案例

假設有個專案需要一個顯示兩數運算結果的 Web 程式, 而我們安排團隊裡的兩個成員來接手這個案子。一位是程式開發人員, 負責 PHP 程式部份;另一位是視覺設計人員, 依照客戶的要求, 製作顯示結果的頁面。

視覺設計人員製作好了一個版型:

smarty_sample\wwwroot\ch01\original\number.htm

<html>
<head>
<title>Sample 1</title>
</head>
<body>
<font color="blue">3000</font>
</body>
</html>

接著程式開發人員把上面的靜態頁面取回後套用程式:

marty_sample\wwwroot\ch01\original\number.php

<html>
<head>
<title>Sample 1</title>
</head>
<body>
<font color="blue">
<?php
$num1 = 1000;
$num2 = 2000;
$num3 = $num1 + $num2;
echo $num3;
?>
</font>
</body>
</html>

以上是常見的網站開發模式, 我們來看看這樣會有什麼狀況發生。

狀況 1

程式開發人員發現程式邏輯需要修正, 兩數相加要改成兩數相乘。而同時之間, 視覺設計人員也想要把輸出的結果改成紅色字體。他們同時將已套用好的頁面取回修改, 因此每個人各自擁有一個原頁面的複本。

程式開發人員針對程式邏輯做了修改:

smarty_sample\wwwroot\ch01\first\number_programer.php

<html>
<head>
<title>Sample 1</title>
</head>
<body>
<font color="blue">
<?php
$num1 = 1000;
$num2 = 2000;
$num3 = $num1 * $num2; // 兩數相加改為兩數相乘
echo $num3;
?>
</font>
</body>
</html>

接著程式開發人員先將修改好的程式存回去。

視覺設計人員則是以原頁面, 加以修改:

smarty_sample\wwwroot\ch01\first\number_designer.php

<html>
<head>
<title>Sample 1</title>
</head>
<body>
<font color="red">
<?php
$num1 = 1000;
$num2 = 2000;
$num3 = $num1 + $num2;
echo $num3;
?>
</font>
</body>
</html>

結果視覺人員並未得知程式開發人員已修改程式, 而隨後立刻把改好的頁面覆蓋掉程式開發人員所存回的頁面。

問題

程式開發人員在開發階段常會遇到已經套好程式的頁面, 被視覺設計人員重新覆蓋的窘境, 使得心血付之流水, 反之亦然。就算修改前先行通知對方, 也會使得對方必須等待頁面修改完成後, 才能夠取回繼續完成工作, 造成效率的降低。

狀況 2

在另一個專案裡, 我們同樣需要兩數相加的程式, 但是這次專案的頁面有所不同。
視覺設計人員重新設計了一個版型:

smarty_sample\wwwroot\ch01\second\number_new.htm

<html>
<head>
<title>Sample 1</title>
</head>
<body>
<p style="color: blue;">3000</p>
</body>
</html>

程式開發人員必須重新將新版型套上舊程式:

smarty_sample\wwwroot\ch01\second\number.php

<html>
<head>
<title>Sample 1</title>
</head>
<body>
<p style="color: blue;">
<?php
$num1 = 1000;
$num2 = 2000;
$num3 = $num1 + $num2;
echo $num3;
?>
</p>
</body>
</html>

問題

以往開發過的程式, 縱然與新專案有百分之九十的相似度, 然而卻因為頁面的長相不同, 依然落得要重新套用程式的命運。

狀況 3

客戶要求頁面風格的改版, 但程式不需作變動。

視覺設計人員直接拿舊有頁面修改, 卻動到程式部份:

smarty_sample\wwwroot\ch01\third\number.php

<html>
<head>
<title>Sample 1</title>
</head>
<body>
<p style="color: blue;">3000</p>
<!-- 原有已套用程式的部份不小心被刪除了 -->
</body>
</html>

問題

程式開發人員得重新檢視頁面裡的程式是否有被更動?如果有的話, 就得為了將程式重新套回 HTML 頁面裡, 而浪費許多寶貴的時間。

狀況 4

沒有經驗或是訓練與認知不足的程式開發人員所套用的程式, 造成改版困難。
有些程式開發人員會透過程式來輸出 HTML :

smarty_sample\wwwroot\ch01\fourth\number.php

<html>
<head>
<title>Sample 1</title>
</head>
<body>
<?php
$num1 = 1000;
$num2 = 2000;
$num3 = $num1 + $num2;
echo "<font color=\"blue\">$num3</font>";
?>
</body>
</html>

問題

視覺設計人員無法正確地檢視頁面的構成, 所有的頁面必須透過程式開發人員來重新套用頁面, 平白浪費人力資源。

以上的狀況, 相信各位讀者或多或少都遇過。而這些問題的產生, 就是因為程式與 HTML 混雜在一起。從以前的 CGI 到近年來的 Server Side Script (像是微軟的 ASP 或是開放源碼的 PHP ) , 多數的舊專案都存在著相同的問題。如果只在小型的專案上, 這種方式其實非常快速。然而如果一個頁面裡, 需要抓取資料顯示的地方非常多的話, 尤其是在中大型專案裡, 資料處理的情況會更為頻繁;那麼這樣的方式絕對會在往後維護上, 造成許多不必要的困擾。

 
Down Logo 旗 標 出 版 股 份 有 限 公 司   100 台北市中正區杭州南路一段15-1號19樓 TEL: 02-2396-3257
Copyright © 2005 Flag Publishing Co.,Ltd. All Rights Reserved    版權所有聯絡我們合作提案
 
現在購買《DSLR 完全探索》《數位相片編修聖經》《數位列印/輸出聖經》《數位相機Raw檔聖經》四書,超值優惠2299元 下載訂購單