由於自己租的 slicehost 只有 256MB 的記憶體, 架 mail server 又很麻煩 (因為我也不懂 XD), 又似乎 mail 有啥反解的問題, 而直接透過 sendmail 這樣寄信會被當成垃圾信, 所以就申請了 Google app, 然後用申請到的帳號透過 SMTP 來發送信件。 由於 Gmail 的 SMTP 又跟一般的設定稍微不一樣(有 SSL), 所以記錄一下。
在 CodeIgniter 上面其實就只是設定個 config 檔就可以了, 設定檔如下:
application/config/email.php
閱讀全文 »
今天看到前幾天才出爐的測試, PHP framework comparison benchmarks, 其實應該就是在比 framework 的結構跟設計對於效能的影響?
| |
Run 1
|
Run 2
|
Run 3
|
Run 4
|
Average
|
| Baseline HTML |
1327.5
|
1326.5
|
1328.6
|
1329.1
|
1327.9
|
| Baseline PHP |
331.6
|
332.1
|
331.4
|
332.0
|
331.8
|
| CakePHP |
3.6
|
3.7
|
3.8
|
3.5
|
3.7
|
| CodeIgniter |
21.5
|
21.2
|
21.7
|
21.7
|
21.5
|
| Zend Framework |
9.3
|
9.1
|
9.2
|
9.3
|
9.2
|
這篇文章中比較了 CakePHP, Zend Framework 跟 CodeIgniter, 然後還有一般的 html 及 plain php, 另外還有使用/不使用 APC 跟 eAccelerator 來比較這三個 framework 的效能。當然, 基本上一定是 html 最快, 然後是 plain php, 再來才會是 framework。而 Framework 中當然最快的是 CodeIgniter 啦! 接著是 Zend Framework, 最後是效能很糟的 CakePHP ( XD )
閱讀全文 »
這次主要是加強安全性的更新, 除了加強了 xss_clean 函式, 另外也可以用 xss_clean 來測試上傳的圖片是否安全。 詳細的資訊可以看看 change log
在 library 方面:
pagination library 加上了可以用 query string 來作分頁的功能, 但還是覺得用 uri_segment 來做比較漂亮, 不過用 query string 也許有他方便的地方。
input library 則是加入了 get_post() 可以用來取得 $_GET 跟 $_POST 的資料, 而我已經用了好一陣子的 get() 也終於加上了文件說明, 畢竟 CodeIgniter 設計是不用 get 來傳資料的。
在 helper 方面:
增加了 Number helper。
而 Form helper 中的 from_input 函式, 自動加入 size 跟 maxlength 這兩個 attributes 的功能, 在這個版本也已經拿掉了。 size 拿掉是不錯, 省了每次都要去設定 size 的動作, 因為預設的size是 30 稍微長 了點, 不過我倒是覺得 maxlength 應該留著阿 ~”~
昨天才在說 CI 1.6.2 快出來了, 沒想到睡前就看到 CI 1.6.2 發佈的新聞 ( Change log )。
CI 的 User Guide 新增了 Common Functions 跟 Reserved Names 兩個頁面, 從 Common Functions 發現了原來有 config_item 這個 function!! 另外也發現了 HTML Helper 有 img() 這個 function, 看來我忽略他好一陣子了 Orz
基本上沒有太重大的更新, helpers 的功能新增比較多, 也多了一個 Compatibility Helper。 不過…值得一提的是 CodeIgniter 有也 twitter 了 XD 看來 twitter 已經變成是發佈訊息的一個管道, 像是 RSS 一樣, 不過 twitter 接續的應用似乎比 RSS 多上許多。 Anyway, 快去 Follow 更新 CodeIgniter 吧!
在使用 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
由於 CodeIgniter 使用 index.php 當作 font controller, 所以基本上把所有的東西都 rewrite 到 index.php 就可以了! 不過由於還是有 images, js 跟 css 檔案不能做 rewrite, 所以再加上類似於 public 那一行就行了! (我習慣是把 images, js 跟 css 資料夾都放在 public 資料夾裡面)
前幾天就看到這一篇。 CodeIgniter 1.6 出來了! 關於 detail 可以看看 Change Log,大致更新如下:
新增了 DB Forge class (這個對我來說好像用不太到) 還有! 就是 Database 的 collation 設定!
而 Active Record 把一些 method 名子改掉了, 像是 orderby 改成 order_by 之類的, 不過舊的 method 名稱目前還是可以繼續用, 不過應該有空就要來把程式改一改, user guide 也都已經提到舊的 method 名稱是 deprecated 了。
閱讀全文 »
這是針對 CodeIgniter 1.5.4 所寫的一個問題, 由於前幾天小雷開始自己用 CI 在寫程式, 不過這次小雷在 CodeIgniter 並不是設定檔的方式來設定資料庫的方式, 而是透過用 DSN 的方式來連線, 結果碰到了問題, 其實這是 CodeIgniter 的 bug。
dsn 應該是像下面這樣:
但是在執行的時候, 跑出來的錯誤訊息居然是抓錯了 database driver, 用這個 dsn, 當然 CI 的 DB driver 應該就是 mysql, 沒想到 CodeIgniter 抓出來的 database driver 居然是 m … 沒錯! 一個英文字母「m」, 像是下面這樣:
require_once(/srv/www/vhosts/admitere/system/database/drivers/m/m_driver.php) [function.require-once]: failed to open stream: No such file or directory
閱讀全文 »
simplepie, 一個頗好用的 php rss parser library, 因為習慣用 CodeIgniter, 就用 CodeIgniter 的方式來寫一下。
第一個步驟就是到 simplepie 的網站下載套件回來、解開, 然後放到 /system/application/library 裡, 把 simplepie.inc 重新命名成 simplepie.php, 接著就可以像下面這樣子用 (當然, 這是寫在 controller 裡)
閱讀全文 »
基本上這裡所謂的整合就是用 CodeIgniter 的 hooks 來做, 單純用 hooks 來設定 include_path, 不然直接設定 include_path, 把 Zend Framework 當成跟 PEAR 類似的放著也可以, 不過由於這樣整合看起來比較帥, 之後程式如果搬家也不會因為失誤而漏了 ZF :p 又, 用 SVN 來管理也方便。
1. 下載 ZF, 把 library 放進 CodeIgniter
就依我的方式, 我是把 ZF 解開後, 把 library copy 放到 CodeIgniter 的 system 下面, 命名為 zendframework
/project/system/zendframework
2. 開啟 CodeIgniter hook
修改 /project/system/application/config/config.php
閱讀全文 »