除了把 stickeraction 從 php + codeigniter 整個換成 python + django 之外, UI 也整個翻新了, 希望能夠趕快弄好上線, 我就不想管了 (攤)
弄 html + css 真的是比寫 code 還要困難, 而且花時間 ~”~
除了把 stickeraction 從 php + codeigniter 整個換成 python + django 之外, UI 也整個翻新了, 希望能夠趕快弄好上線, 我就不想管了 (攤)
弄 html + css 真的是比寫 code 還要困難, 而且花時間 ~”~
DataMapper
http://stensi.com/datamapper/
IgnitedRecord
http://www.assembla.com/wiki/show/bnqonahgCr3zI3ab7jnrAJ
這兩個 ORM library 可以試試看, 不過目前我好像偏好直接寫 SQL, 長長一串好像看起來比較爽 …
不過我是覺得, CodeIgniter namespace 的問題… 會在使用這些 ORM 的時候造成一些困擾 囧rz
像是 CodeIgniter 的 Controller, Library 跟 Model 的 class name 本來就不能一樣了, 但至少 Model 的名稱叫做 foo_model 之類的, 還可以避開, 但是 ORM 多個 postfix …不是很奇怪?
倒是希望 CodeIgniter 可以解決 name space 這個問題先 ~”~
CodeIgniter 在 10/23 釋出了 1.7.0 版本, 來列出一些我覺得比較重要的改變好了, 詳細的改變還是請看 Changelog。
1. 新增 form_validation library
這個版本最主要的就是新增了一個 form_validation 的 library 用來取代舊有的 validation library, 而 validation library 也在 1.7.0 開始被列為 deprecated。 ( 應該翻做不建議使用? ) anyway, validation library 的文件也已經從 user guide 移除了, 不過 validation 依然可用, 只是得找時間換成 form_validation 就是了。
看了一下 form_validation 的文件, 這次的更新, 大幅降低了以往 validation 囉唆使用的方式, 改成了跟 kohana 2.1 時的 validation 類似的方式, 簡單許多, 很不賴。
以往的 validation 真的是是很囉唆, 像是這樣
$rules['name'] = 'required|alpha_numeric|max_length[20]';
$rules['email'] = 'required|valid_email';
$rules['web'] = 'required|prep_url';
$this->validation->set_rules($rules);
$fields['name'] = '名稱';
$fields['email'] = 'email';
$fields['web'] = '網站';
$this->validation->set_fields($fields);
現在簡化許多, 變成是
$this->form_validation->set_rules('name', '名稱', 'required|alpha_numeric|max_length[20]');
$this->form_validation->set_rules('email', 'email', 'required|valid_email');
$this->form_validation->set_rules('web', '網站', 'required|prep_url');
不像以往是把 set_rules 跟 set_fields 分開作, 現在在 set_rules 直接一起把 set_fields 的部份做掉了, 寫起來輕鬆許多。
2. 可另外指定 library 載入後的物件名稱
以往, 原本 library 的 class name 叫什麼, 在使用的時候就得用 class name 來使用, 沒有辦法另外指定比較短的名稱來方便使用, 以 simplepie 來說:
$this->load->library('simplepie');
$this->simeplepie->function_name();
從 1.7.0 之後就可以這樣:
$this->load->library('simplepie', '', 'sp');
$this->sp->function_name();
這樣感覺還不錯 :D 不過以上只是舉例, 我還是依舊用 simplepie 這個名稱 XD
昨天看到了 CodeIgniter 釋出了新版的 1.7.0, 所以就打算來升級一下, 不過想起以往在升級 CodeIgniter 的時候, 由於有使用 SVN 來當作 VCS, 所以每個目錄裡面都會有 .svn, 所以沒辦法直接覆蓋目錄, 所以當時就一個一個目錄的打開, 把該升級的檔案覆蓋掉, 沒辦法直接換目錄, 否則 svn 的資訊就都會不見了。
所以昨天找了一下 svn:externals 的用法, 透過 svn:externals 就可以很快的昇級 CodeIgniter system。
一開始新的 CI project 我都會把 /system/application 這個目錄給搬出來。 可以直接搬出來成為 /application 而不用改任何程式。 平常也根本動不到 /system 目錄裡面的東西。 如此一來只要把 /system 設為 svn:externals 指到 CodeIgniter SVN 就可以自動更新了。 但前提是沒有修改 /system 裡面的檔案。
Read the rest of this entry »
其實最早在剛接觸 CodeIgniter 的時候記得是版本 1.5.2, 那時候 Model 都這麼寫, 例如下面的 User_Model。
class User_model extends Model {
function __construct() {
parent::__construct();
}
function get_by_name($name) {
$this->db->where('name', $name);
$query = $this->db->get('users');
if ($query->num_rows()) {
return $query->row();
}
return false;
}
function get_all() {
$query = $this->db->get('users');
if ($query->num_rows()) {
return $query->result();
}
return array();
}
}