看板 PHP 關於我們 聯絡資訊
※ 引述《appleboy46 (我是道明柏毅)》之銘言: : : 3. Template engine 應用則用, 當省則省. : : 不是每個專案都應該要套這東西上去, 但我也不認為 coder 能因此而不學 XD : : 對不使用樣版引擎的 php script 來說, 應盡量使得程式碼與 html 分開, : : 並適當在此加上註解, 以便日後修改除錯. : 我想問問這點 : 請問如果不用樣板 怎麼把程式碼跟 html分開 : 寫PHP 我都是2個混在一起 最近想學smarty 就只能浪費記憶體, 把該查的東西先查完再進入 html 階段啊 XD 舉個例來說說一個簡單, 不使用樣版引擎的分離法. <!DOCTYPE ... > (第一行, 理由我以前寫過了) <?php // segment 1, 處理輸入 $inData = $_POST['data'] ; // 傳進來的資料 $inHead = $_POST['head'] ; // 傳進來個頭 $inDB = $_POST['db'] ; // 傳進來的資料庫名稱 // segment 2, 主要運算 require_once("mydb.inc.php") ; // 使用 PEAR::DB 我寫的一個小檔 require_once("ezStrProc.inc.php") ; // 常用的字串處理 $myDB = getDB(doStr($inDB)) ; $qStr = "select * from MYTBL" ; $ret = $myDB->query($qStr) ; // 好吧, $myDB, $qStr, $ret 也都是習慣不加註解的變數名稱 XD $outbuff = array() ; // 這個也是 while($ret->fetchInto($raw)) array_push($outbuff, $raw) ; ?> (一堆 html) <table> <tr><th>aa</th><th>bb</th></tr> <?php reset($outbuff) ; $outstr = "" ; // 又是一個習慣上不加註解的變數 ^^;; foreach($outbuff as $key=>$val) $outstr .= "<tr><td>$key</td><td>$val</td></tr>\n" ; echo $outstr ; ?> </table> (又一堆 html) 所以 html 堆裡頭, 不會有關於程式邏輯的東西. 而這樣的作法, 其實也就很接近 template engine 所希望弄到的事情. 對於我這樣 show 表格的方式還有意見的話, 網路上其實也都抓得到各種的 array_display, form_generator 一類的東西 ^^;; 不然你以為樣板引擎是怎麼做到這些事的 :p 個人覺得最難看的程式就是那種沒事雜一堆 <?php echo $aaa;?> 在 html 裡的 所以如果情況許可, 我會習慣把 <?php 都放在該行的第一格, 省得除錯傷眼 ^^;; -- 鬼壓床怎麼辦 騎上去啊 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 222.157.136.54 ※ 編輯: clifflu 來自: 222.157.136.54 (11/20 01:41)