On twitter

@swpave 我一開始也是阿~ 不過看了快一年了, 發現每個人都好有自己的特色! XDD

follow me on twitter

Posts Tagged ‘framework’

URI class 0

在 CodeIgniter 跟 Kohana 這兩個 framework, 在網址傳遞變數時, 都不是透過 query string 來傳遞變數, 而是用所謂比較漂亮網址來取得變數, 例如:

以往 PHP 在傳遞變數的方式為:

http://tzangms.com/user.php?name=tzangms

而 CodeIgniter 的方式則是像這樣

http://tzangms.com/user/tzangms

使用 framework 的網址漂亮許多, 看起來也比較直覺, 如果有使用 CI 的人就會知道, 這類的網址是透過下面這個方式來取得變數:

$this->uri->segment(2); // 取得 'tzangms'

所以我實作了一個 URI class, 透過取得 PATH_INFO 之後, 將其分段後取得需要的變數:
Read the rest of this entry »

February 26th, 2009 Programming Tags: , ,

config class 初步實作 0

這個 config class 參考 kohana 的 config 方式來實作, 搭配先前提到的用 yaml 來作設定檔, 來讀取 yaml 。

首先說明一下, 在 CodeIgniter 讀取設定檔的部份, CI 在讀取設定檔時, 必須先用下面這個方式來載入

 $this->load->config('foo'); // 讀取 foo.php 設定檔 

當整個設定檔載入之後, 另外在用下面這個指令來取得需要的設定值

$this->config->item('bar'); // 讀取 foo.php 裡的 $config['bar'] 設定值
config_item('bar'); // 或是這樣

然而看過 kohana 2.1 的做法之後 ( kohana 2.2 把 config 移到 Core 裡, 變成一個 method ), 是覺得 kohana 的做法比較好看 XD 像是下面這樣:

config::item('foo.bar'); // 讀取 foo.php 裡的 $config['bar']
kohana::config('foo.bar'); // kohana 2.2 變成這樣

另外一個原因就是, 因為 CI 的設定檔都是把所有的 config 載入到同一個 container, 會造成變數名稱衝突, 所以依照 CI Config 的 convention, 就是要在每個設定值的 key 都加上 prefix, 太累贅。 而 kohana 直接用設定檔的名稱當作 prefix, 我覺得是一個不錯的方法。

所以就參考了 kohana 語法的部份, 加上先前寫好的 yaml wrapper 來實作一下, 用來讀取設定檔的 config class, 初步簡單寫了下面這一段。

Read the rest of this entry »

February 11th, 2009 Programming Tags: ,

Kohana PHP framework 試玩心得 10

Kohana 前身叫做 BlueFlame, 是由 CodeIgniter 衍生出來的 PHP framework, 所以要從 CI 跳槽還滿快的 XD 而 Kohana 跟 CodeIgniter 最大的不同就是, Kohana 只能在 PHP 5 上跑。 不過其實… 現在都該換到 PHP5 了啦:p 重點是! Kohana 解決了 CodeIgniter 很多不足的地方。

像是 Namespace 的問題, 在 CI 上如果有相同名稱的 library、Model 或是 Controller 就會衝到, Kohana 則解決了這個問題。 另外在 CI 上如果有自定的 helper 的話, 其他維護者並不容易找出是寫在哪支 helper 裡, 而 Kohana 的 helper 是用 class 來作, class name 的 prefix, 則可以容易辨識出是哪支 helper, 也減少 function name 衝突的問題, 對於維護上方便很多。

另外 Kohana 也提供了 module 的機制, module 擁有自己的 controller, model 跟 view, 可以將程式劃分的更細。例如 Konaha 本身就提供了 Auth module (ACL)。 雖然 CI 也有 matchbox 提供了相同的功能, 但是需要 override CI_Loader, 萬一 CI 的版本升級, CI_Loader 有所改變呢? 當然還是比不上 Kohana 內建的好。
Read the rest of this entry »

July 16th, 2008 Programming Tags: , , ,

[網摘] April 2nd 2008 2

用 grid 來做網頁 layout, 還滿屌的構想, 也頗實用, 可以用來快速做 prototype, 跟開發。

CSS framework, 又到了選邊站的時候了嗎? XD 基本上就是那哪個爽就用哪個阿! 至少文件看起來清楚、爽是一個重點, 像是 CodeIgniter 文件看起來就很爽, 上手也快!

看標題就知道了吧, 我覺得這篇真的還滿值得一看的, 也許可以先看看他的 Demo 。 這篇是由 WebDesignerWall 所寫的一篇教學, 話說 WebDesignerWall 的網頁設計真是屌到翻 (Y) 。
看了之後, 本來已為是稍微有點難度的動畫效果, 沒想到好簡單勒! 本來就都知道的用法, 可是重點就是在 CSS 跟美術設計的部份, 讓他看起來真的很 fancy。
程式設計守則第一條, 永遠是你自己的錯 XD 嗯阿! (雖然我也常陷入一種, 以為是看到鬼的狀態) , 但是就絕大多數的開發經驗來說, 通常都是 programmer 的錯, 或者甚至是非常笨的 bug, 而不是 library 或是機器的錯, 所以記得先從自己的錯找起會比較快 XD 又或者是跟其他開發者一起開發的時候, 先確定不是自己的錯, 在去說人家, 避免大家不爽阿 XD
這也是一個很屌的東西阿! 網路上最常用到的還是表單(Form), 最早表單都用 table 來作排版, 現在已經捨棄 table, 像我就是利用 label 來作, 這個 reForm 則是用 javascript 來做表單的自動排版, 看起來真的很屌, 可以先看看他的 Demo, 多帥氣! 當然這也是之後有空在研究, 畢竟我只是作 PHP Coding (只是現在寫 Web app 的, 誰能免得了不碰 UI 呢?)

CodeIgniter Modular extension: HMVC 7

在使用 CodeIgniter 在開發的時候, 其實一直覺得 CI 的架構好像有點不足, 少了什麼東西。 例如說我想要有個使用者聯播的功能區塊, 有很多地方都想掛上這個功能區塊, 但是我該怎麼做? 在 CodeIgniter 現有的架構中, 看來就是寫成 Library 然後掛個 View, 然後把輸出 return 到呼叫的 Controller, 但是我總覺得這樣很亂, 而且東西一多, 會很難維護, Library 會不像 Library 而 View 到底是給 Controller 用還是 Library 用, 甚至 Model 也會一起捲進來, 這樣程式的架構會很雜亂。

所以後來我就自己動手 extends CI 開始寫起了 module 功能, 寫沒多久就發現! 原來早就有類似的東西, 而且在 CodeIgniter wiki 就有提到了, 就是 Modular Extensions – HMVC

HMVC 可以用來幫 CI 加上 module 的功能, 我一直想要的就是這個功能阿!! 可以擺脫先前雜亂的方式, 可以很方便寫個模組化的功能。

簡單說明一下 HMVC, 在掛上 HMVC 之後就可以呼叫 module, 而 module 有自己的 Controller、View 跟 Model, 這樣一來寫好 module 之後, 直接在 Controller 呼叫 module 就可以了, 這個整個程式架構就非常的明朗阿!! 整個 module 的 code 都在同一個資料夾裡面, 非常清爽! 所以說 Framework 早該有 module 這功能的 XD

Partners of Oceanic / 人生海海

jiwo sca wellmeet