作者 主題: smarty的必要性?  (閱讀 11025 次)

0 會員 與 1 訪客 正在閱讀本文。

bill80362

  • 懷疑的國中生
  • **
  • 文章數: 38
    • 檢視個人資料
smarty的必要性?
« 於: 2009-09-28 11:51 »
最近想開始學習smarty,但是看了又看,出現了一個問題,
因為一開始會想使用smarty是因為他的程式跟設計分離,但是好像也可以用這種概念自己做,
也可以免除再去學smarty語法。
但是我相信smarty有許多人來使用,一定有它的優點存在,希望大家糾正一下。
以下是我的想法:
分成兩部分1.程式 和 2.設計
1.程式
<?

將變數先設好如
$aa="HELLO";

?>
2.設計
<? include "xxx.php"; ?>//在此放入版面,裡面可以使用PHP來抓取上方設定的變數。

以上是概念,好像用此方式可以做到 程式 和 設計 分離請問我的觀念和想法有錯嗎?

TyroneYeh

  • 俺是博士!
  • *****
  • 文章數: 2396
  • 性別: 男
    • 檢視個人資料
回覆: smarty的必要性?
« 回覆 #1 於: 2009-09-28 12:03 »
自己弄可能最後還是程式碼跟網頁還是混在一起!
Smarty 有 plugin 跟 cache 功能!
必要的變數用 assign 傳到 template 上!
如果用 include 最後還是會搞不清楚那個是 template 跟程式碼!!
--
TyroneYeh

Darkhero

  • 酷!學園 學長們
  • 俺是博士!
  • *****
  • 文章數: 3728
  • 性別: 男
    • 檢視個人資料
    • ㄚ凱隨手紀
回覆: smarty的必要性?
« 回覆 #2 於: 2009-09-28 12:07 »
我想我的重點會放在格式.規範.擴充性...

自己寫..我也會..他也會..隔壁的小明也會...
然後大家都寫一個 template engine 出來.. 大家用的語法不同, 迴圈的處理方式不同.. 引入樣板元件的方法不同...
到時候造成的學習曲線就會變大很多...

另外當網站變大了, 要加上 cache , 要把一些樣板設定檔案獨立.. 要進行輸出變數的處理..
事實上都會是當在寫 template engine 要考慮的...

在我來看.. 目前 smarty 的引擎已經算是頗為完善. 效率上也不會太差..
擴充性的部份由於可以自己撰寫 plugin 等...相信應該可以滿足大部分人的需要...
希望我們的討論是為了把問題解決,而不是爭論誰對誰錯.
『灌水才是重點,發文只是順便』
『我寧可讓不會釣魚的工程師餓死,也不想讓會餓死的工程師去攪沉公司....』
Blog: http://blog.darkhero.net/
秘密基地: http://www.darkhero.net/comic/
目前服務的網站: http://www.libook.com.tw/

TyroneYeh

  • 俺是博士!
  • *****
  • 文章數: 2396
  • 性別: 男
    • 檢視個人資料
回覆: smarty的必要性?
« 回覆 #3 於: 2009-09-28 12:15 »
如果覺得 smarty 不好學... 可以看看這套 http://phpsavant.com/docs/
樣板跟 程式碼都用 php 的!!

概念其實差不多... 但我覺得 smarty 功能比較多!!

就像不用 framework 開發跟用,有用 framework 可以加速開發時間,不用許多功能都要自己寫!
smarty 也比較多人用啦!!
--
TyroneYeh

Yamaka

  • 俺是博士!
  • *****
  • 文章數: 4913
    • 檢視個人資料
    • http://www.ecmagic.com
回覆: smarty的必要性?
« 回覆 #4 於: 2009-09-28 12:16 »
目前, 我使用 smarty 的目的只有兩個, 一是方便自己管理要顯示在網頁上的變數
至少我在瀏覽程式碼或是網頁時, 能夠直接知道哪些是要顯示在網頁上的資料
用 include "xxx.php", 老實說, 對老人家來說頗吃力的, 尤其當程式碼有幾百個時...
還要去判斷哪一個php是程式碼, 哪一個是網頁檔, 這是一個很沉重的工作啦  ;D

至於 smarty 其他功能, 之前還有用到像是 section 這類的, 現在也都不用了
資料都是用 json 丟給網頁, 然後用 js 來處理...

另外還會用到一個功能, 就是用 {if} {/if} 來換網頁的 header 與 footer  :D

ricky

  • 區域板主
  • 鑽研的研究生
  • *****
  • 文章數: 669
    • 檢視個人資料
    • Ricky 碎碎唸
回覆: smarty的必要性?
« 回覆 #5 於: 2009-09-28 14:25 »
樓上的幾位學長們點出了幾個問題
採用樣板引擎只解決了html跟程式碼混雜的問題
其他像是程式邏輯,SQL混雜,甚至是樣板檔案路徑擺放的問題並沒有解決。
如果樓主對於php已經有一定程度的了解,其實可以考慮跨入MVC framework的行列


我的symfony作品:YOMOpets 寵物誌
有興趣可以一起來討論symfony喔
我的部落格:http://ricky.ez2.us/

TyroneYeh

  • 俺是博士!
  • *****
  • 文章數: 2396
  • 性別: 男
    • 檢視個人資料
回覆: smarty的必要性?
« 回覆 #6 於: 2009-09-28 15:22 »
MVC framework?
ricky 先進推薦那套啊?
--
TyroneYeh

johnpupu

  • 憂鬱的高中生
  • ***
  • 文章數: 194
    • 檢視個人資料
回覆: smarty的必要性?
« 回覆 #7 於: 2009-09-28 16:03 »
ricky 一定是 symfony的呀

目前有在用這套..簡單方便用..
http://phpsavant.com/

ricky

  • 區域板主
  • 鑽研的研究生
  • *****
  • 文章數: 669
    • 檢視個人資料
    • Ricky 碎碎唸
回覆: smarty的必要性?
« 回覆 #8 於: 2009-09-28 17:42 »
MVC framework?
ricky 先進推薦那套啊?

其實php的framework還挺多的各有優缺點
例如 cakephp,symfony,codeigniter,zend framework ...

以我比較熟悉的symfony來說
資料庫整合了Propel以及Doctine兩大重量級的ORM引擎
其他像是ajax,cache,i18n,i10n,validator,form,以及mvc最強調的scaffold都已經支援了
同時上面有旁大的plugin資料庫,有事沒事上去翻翻常常可以挖到很多寶(像是twitter或是web service的plugin)
當然symfony也不是沒缺點,慢一直是他被人詬病的地方。(可以透過快取解決,2.0版預計速度可以提昇7倍。謎之音:1.3版都還在alpha,2.0有的等了。)
設定檔多到嚇死人。(但是也有人很愛,幾乎各大功能都可以透過修改設定檔的方式去開啟,像是快取,存取權限。)

最後不免介紹一下哪些網站是使用Symfony開發的呢
Yahoo bookmark
YOMOpets寵物誌  ;)打個廣告

如果想要學習的話
文件 可以慢慢看
24天快速入手
官方也放出了一個askeet的原始碼,讓你做出一個簡單的Yahoo知識+

當然用的順手才是最重要的。
版上也有其他的神人
像是CakePHP的darkhero
Zend Framework的uberr
Code Igniter的appleboy

我的symfony作品:YOMOpets 寵物誌
有興趣可以一起來討論symfony喔
我的部落格:http://ricky.ez2.us/

Darkhero

  • 酷!學園 學長們
  • 俺是博士!
  • *****
  • 文章數: 3728
  • 性別: 男
    • 檢視個人資料
    • ㄚ凱隨手紀
回覆: smarty的必要性?
« 回覆 #9 於: 2009-09-29 10:50 »
CakePHP 的話 Kiang 比較神... :p
希望我們的討論是為了把問題解決,而不是爭論誰對誰錯.
『灌水才是重點,發文只是順便』
『我寧可讓不會釣魚的工程師餓死,也不想讓會餓死的工程師去攪沉公司....』
Blog: http://blog.darkhero.net/
秘密基地: http://www.darkhero.net/comic/
目前服務的網站: http://www.libook.com.tw/

TyroneYeh

  • 俺是博士!
  • *****
  • 文章數: 2396
  • 性別: 男
    • 檢視個人資料
回覆: smarty的必要性?
« 回覆 #10 於: 2009-09-29 11:41 »
後來想想... 如果是 Framework 不是就跟樓主更遠了!
因為樓主覺得 smarty 都很難了... Framework 不是....
--
TyroneYeh

bill80362

  • 懷疑的國中生
  • **
  • 文章數: 38
    • 檢視個人資料
回覆: smarty的必要性?
« 回覆 #11 於: 2009-09-29 15:14 »
其實我不是排斥smarty耶...
感謝大家回覆阿~
看完後我覺得 我應該回著手學習一些MVC framework
應該也先不考慮SMARTY
有去搜尋一下後發現cakePHP和zendphp 兩者的資訊好像比較豐富
現在會考慮選一套下手

PS 有修改過舊網站,發現當程式量很大的時候真的很難閱讀,才興起想要把程式和美工分開的念頭,
希望能使日後維護較容易些。

bill80362

  • 懷疑的國中生
  • **
  • 文章數: 38
    • 檢視個人資料
回覆: smarty的必要性?
« 回覆 #12 於: 2009-09-29 16:47 »
剛去看了一下 zend的api手冊
大概知道了一些東西了 想問一下基本多觀念
如果我想用MVC架構下使用資料庫語法如select * from xxx
那麼這段語法理論上是不是不應該出現在contorl裡面?
例如
1.control去使用某個method直接能取得陣列型態資料的回傳
2.model是一個工具(如我把它做成拉資料庫的工具)
因此我在control裡面使用method給他參數(資料庫名稱)讓他去select該資料庫

不好意思,沒有真實去實作MVC架構,因此希望能說明一下,這麼做的原因?

我目前的認知:
這麼做是為了減少程式碼重複撰寫,因此將MODEL包裝成黑盒子,需要使用時將資料INPUT進去
他就會OUTPUT出來,因此感覺第2種比較符合我的想法。

但是以爬文的一些觀念中,要避免再control裡使用資料庫溝通,所以要再model中去跟資料庫溝通,
因此第1種比較適用。

不知道對於我的認知上是否有錯誤,而上述應該用哪種方式來撰寫較為適當呢?

kiang

  • 活潑的大學生
  • ***
  • 文章數: 310
    • 檢視個人資料
    • 就這間電腦工作室
回覆: smarty的必要性?
« 回覆 #13 於: 2009-09-29 16:58 »
CakePHP 的話 Kiang 比較神... :p
...躺著也中槍...

話說,明天晚上有眾神人的聚會,小弟會過去幫忙倒茶水,有興趣可以來閒聊嚕:
http://groups.google.com/group/zf-tw/t/cce53c325550d8d0
****************************************************
Finjon Kiang / 江明宗
Just This Computer Studio / 就這間電腦工作室
Website: http://olc.tw
****************************************************

ricky

  • 區域板主
  • 鑽研的研究生
  • *****
  • 文章數: 669
    • 檢視個人資料
    • Ricky 碎碎唸
回覆: smarty的必要性?
« 回覆 #14 於: 2009-09-29 18:23 »
理論上真正處理資料庫IO的部份應該是在Model層
當然現在大多數的MVC frame work都會實做orm的部份
把資料封裝成物件,只有極少數的情況才會去對DB下SQL
舉個symfony的例子

例如我有個account的table
結構如下
代碼: [選擇]
id         -> integer primary key
name     -> string
nickname  -> string
我要取得id值為11的row
代碼: [選擇]
$Account=AccountPeer::retrieveByPK(11);
或是我想要取得id值大於10的row,並且照name作遞減排序
代碼: [選擇]
$Criteria=new Criteria();
 $Criteria->add(AccountPeer::ID,11,Criteria::GREATER_THAN)
   ->addDescandingOrderByColumn(AccountPeer::NAME);
 $Accounts=AccountPeer::doSelect($Criteria);
 foreach($Accounts as $Account)
 {
   ....
 }
取得底下各個column值
代碼: [選擇]
$Account->getId();
 $Account->getName();
 $Account->getNickname();
or $Account->toArray(); //將各個欄位轉換成一個array
Account這個物件就是一個model層的實做
所以在controller中你要存取的對象是Account這個Model物件
而非跳過Model直接下SQL


剛去看了一下 zend的api手冊
大概知道了一些東西了 想問一下基本多觀念
如果我想用MVC架構下使用資料庫語法如select * from xxx
那麼這段語法理論上是不是不應該出現在contorl裡面?
例如
1.control去使用某個method直接能取得陣列型態資料的回傳
2.model是一個工具(如我把它做成拉資料庫的工具)
因此我在control裡面使用method給他參數(資料庫名稱)讓他去select該資料庫

不好意思,沒有真實去實作MVC架構,因此希望能說明一下,這麼做的原因?

我目前的認知:
這麼做是為了減少程式碼重複撰寫,因此將MODEL包裝成黑盒子,需要使用時將資料INPUT進去
他就會OUTPUT出來,因此感覺第2種比較符合我的想法。

但是以爬文的一些觀念中,要避免再control裡使用資料庫溝通,所以要再model中去跟資料庫溝通,
因此第1種比較適用。

不知道對於我的認知上是否有錯誤,而上述應該用哪種方式來撰寫較為適當呢?
我的symfony作品:YOMOpets 寵物誌
有興趣可以一起來討論symfony喔
我的部落格:http://ricky.ez2.us/

ricky

  • 區域板主
  • 鑽研的研究生
  • *****
  • 文章數: 669
    • 檢視個人資料
    • Ricky 碎碎唸
回覆: smarty的必要性?
« 回覆 #15 於: 2009-09-29 18:24 »
所以得把自己埋起來,光躺著是不夠的。 ;D

CakePHP 的話 Kiang 比較神... :p
...躺著也中槍...

話說,明天晚上有眾神人的聚會,小弟會過去幫忙倒茶水,有興趣可以來閒聊嚕:
http://groups.google.com/group/zf-tw/t/cce53c325550d8d0
我的symfony作品:YOMOpets 寵物誌
有興趣可以一起來討論symfony喔
我的部落格:http://ricky.ez2.us/

bill80362

  • 懷疑的國中生
  • **
  • 文章數: 38
    • 檢視個人資料
回覆: smarty的必要性?
« 回覆 #16 於: 2009-09-29 18:41 »
我了解了~~感恩阿ricky

繼續埋首苦讀了...

micmic3

  • 俺是博士!
  • *****
  • 文章數: 1692
    • 檢視個人資料
回覆: smarty的必要性?
« 回覆 #17 於: 2009-09-30 13:15 »
個人覺得上手的容易度 CI > CAKEPHP > ZF
symfony是真的摸都沒摸過
CI 比較像是一堆 class 的集合,所以上手最快...
http://github.com/appleboy/PHP-CodeIgniter-Framework-Taiwan
限制最少

CAKE 個人認為比 ZF friendly
ZF 因為是官方的.....嗯,一切都在不言中
--
最近一直在和 flex actionscript 奮戰,有誰能來教教我啊~.~
« 上次編輯: 2009-09-30 13:19 由 micmic3 »

johnpupu

  • 憂鬱的高中生
  • ***
  • 文章數: 194
    • 檢視個人資料
回覆: smarty的必要性?
« 回覆 #18 於: 2009-09-30 14:36 »
最近在用Yii
裡面有個 extension 可以吃mwb 把 model 的relationship 建好
還滿愉快的

ricky

  • 區域板主
  • 鑽研的研究生
  • *****
  • 文章數: 669
    • 檢視個人資料
    • Ricky 碎碎唸
回覆: smarty的必要性?
« 回覆 #19 於: 2009-09-30 17:38 »
symfony中可以透過 cli 指令
./symfony propel-build-schema
直接從db中的關聯結構產生schema.yml
再用
./symfony propel-build-model
建立關聯的model

我的symfony作品:YOMOpets 寵物誌
有興趣可以一起來討論symfony喔
我的部落格:http://ricky.ez2.us/

Darkhero

  • 酷!學園 學長們
  • 俺是博士!
  • *****
  • 文章數: 3728
  • 性別: 男
    • 檢視個人資料
    • ㄚ凱隨手紀
回覆: smarty的必要性?
« 回覆 #20 於: 2009-09-30 17:40 »
CakePHP .. 只有 cake bake , cake schema , cake i18n ... 等...
希望我們的討論是為了把問題解決,而不是爭論誰對誰錯.
『灌水才是重點,發文只是順便』
『我寧可讓不會釣魚的工程師餓死,也不想讓會餓死的工程師去攪沉公司....』
Blog: http://blog.darkhero.net/
秘密基地: http://www.darkhero.net/comic/
目前服務的網站: http://www.libook.com.tw/

ricky

  • 區域板主
  • 鑽研的研究生
  • *****
  • 文章數: 669
    • 檢視個人資料
    • Ricky 碎碎唸
回覆: smarty的必要性?
« 回覆 #21 於: 2009-09-30 17:44 »
不然下次喝咖啡的時候來介紹一下Symfony好了
只是不知有沒有人要捧場一下
台灣用Symfony的人好少阿... ???
我的symfony作品:YOMOpets 寵物誌
有興趣可以一起來討論symfony喔
我的部落格:http://ricky.ez2.us/

appleboy

  • 活潑的大學生
  • ***
  • 文章數: 224
    • 檢視個人資料
    • 小惡魔筆記
回覆: smarty的必要性?
« 回覆 #22 於: 2009-10-05 14:30 »
不然下次喝咖啡的時候來介紹一下Symfony好了
只是不知有沒有人要捧場一下
台灣用Symfony的人好少阿... ???

我怎麼覺得用 CI 的人也蠻少的,繼續推廣一下,好想去台北聽聽看其他 Framework

如果要先學 CI,其實中文文件看看,實際操作看看,就會很順手了,包含 CI 架構流程圖



新手剛開始找 MVC Framework 我會很建議先讀一下 CI 的文件。

http://ci.wuboy.twbbs.org/user_guide/toc.html
« 上次編輯: 2009-10-05 14:33 由 appleboy »

歡迎來到 CodeIgniter 繁體中文討論區
My Blog:小惡魔 - 電腦技術 - 生活日記 - 美食介紹 - AppleBOY

bill80362

  • 懷疑的國中生
  • **
  • 文章數: 38
    • 檢視個人資料
回覆: smarty的必要性?
« 回覆 #23 於: 2009-10-08 13:39 »
謝謝阿~真的是很容易懂的文件
對新手來說真的很值得推薦
阿里阿多~~