+1 cho Yii::Model::rules()

132 views
Skip to first unread message

datgs

unread,
Jan 10, 2012, 10:00:37 PM1/10/12
to PHPVietnam
http://i-php.net/2012/01/mot-diem-rat-hay-cua-yii-model-copy/

Hôm nay xem overview của Yii Framework, khám phá ra cách tổ chức
validation rules của Yii rất là hay. Tôi hay sử dụng CakePHP và không
thỏa mãn với cách thiết lập validation rules của nó:
CakePHP
Model::$validate = array(); # là một biến trong một class. Vì thế rất
là bất tiện khi muốn có một validation rule tùy biến tham số được (ví
dụ password pattern lấy ra từ configuration, hoặc database). Thông
thường sẽ phải viết một hàm callback cho cái rule mới này.
Yii
public function rules() {
return array(
array(‘title, content, status’, ‘required’),
array(‘title’, ‘length’, ‘max’=>128),
array(’status’, ‘in’, ‘range’=>array(1,2,3)), # range này có thể tùy
biến được
array(‘tags’, ‘match’, ‘pattern’=>’/^[\w\s,]+$/’,
‘message’=>’Tags can only contain word characters.’),
array(‘tags’, ‘normalizeTags’),
array(‘title, status’, ’safe’, ‘on’=>’search’),
);
}
Model::rules(); # trả về một mảng các validation rules. Vì vậy rất
tiện lợi nếu như chúng ta cần tùy biến tham số từ database.

Một điểm có thể học tập được từ Yii validation rules là cách tổ chức
theo nhóm. Bạn thử tưởng tượng bạn đang sử dụng CakePHP để làm điều
này? Một table có khoảng 20 fields mà thực hiện validation theo chuẩn
CakePHP thì quá oải.

Nguyễn Thạc Hùng

unread,
Jan 11, 2012, 3:45:58 AM1/11/12
to phpvi...@googlegroups.com

Ban da thu Tim hieu validation cua kohana chua? Cg rat linh hoat va uyen chuyen do

--
Bạn nhận được thư này vì bạn đã được đăng ký vào nhóm Google Groups "PHPVietnam".
Để đăng bài lên nhóm này, hãy gửi email đến phpvi...@googlegroups.com.
Để hủy đăng ký khỏi nhóm này, hãy gửi email tới phpvietnam+...@googlegroups.com.
Để biết tùy chọn khác, hãy truy cập nhóm này tại http://groups.google.com/group/phpvietnam?hl=vi.

Son Dat Giang

unread,
Jan 11, 2012, 4:06:28 AM1/11/12
to phpvi...@googlegroups.com

Yeah, theo mình đánh giá thì đó cũng là một thư viện tốt.


Đưa nó vào ORM thì cũng không khác gì Yii lắm.


Relationships có vẻ giống CakePHP. Nhìn sơ qua thì thấy gọn gàng hơn CakePHP rất nhiều.

...

Ai sử dụng FW này nhiều rồi thì có thể đưa ra cảm nhận đc không?

---------------------------------
Best regards !
Giang Son Dat
Ho Chi Minh City, Vietnam
Mobile: +84 988114164



2012/1/11 Nguyễn Thạc Hùng <aot...@gmail.com>

Nguyễn Thạc Hùng

unread,
Jan 11, 2012, 4:19:42 AM1/11/12
to phpvi...@googlegroups.com

Minh cg co mot chut kinh nghiem ve kohana. Cho den thoi diem hien tai thi kohana da khac nhieu so voi truoc day. Mot vai dac diem kha hay ma minh rat thich o framework nay la: su dung kien truc HMVC, route url linh hoat va de dang, co the add them cac thu vien ben ngoai vao nhu zend, smarty,...; tuy document chua dc tot lam nhung co mot cong dong kha lon, cac module cung co kha nhieu tren github. Noi chung minh thay rat ung khi su dung framework nay, hien tai chua muon chuyen sang su dung framework nao khac mac du cg da dung qua: cake, symfony, zend, yii, prado, doophp.
Hien tai cong dong su dung kohana taj vietnam minh thay chua co nhieu, hy vong se co nhieu nguoi thjch framework nay nhu minh.
Mot so site minh lam tren framework nay: xjtjn.net, giamsatgps.vn, phimhay24h.net, game.gioitre.net, maxland.vn,...
Cac ban co the tham khao qua v  cho em xjn y kien luon ;)

Son Dat Giang

unread,
Jan 11, 2012, 4:46:15 AM1/11/12
to phpvi...@googlegroups.com
Vote thêm 1 cái nữa.

HMVC rất là linh hoạt. Mình đánh giá khả năng module hóa của nó cao hơn các giải pháp. Thông thường khi mình muốn chia nhỏ các chức năng (từng phần khác nhau trên một trang web chẳng hạn) có 2 cách:

1/ Dùng view elements (như kiểu của CakePHP). Cách này dở ở chỗ là mình vẫn chỉ có một action và phải load mọi thứ lên đó mà không biết cái elements có được gọi hay không (rất tệ trong trường hợp dynamic)

2/ Dùng kiểu ->dispatch() trong view (kiểu như Zend_View::action hoặc cake ->requestAction). Kiểu này thường ngốn tài nguyên lớn vì quá trình dispatch thường chậm.

HMVC về bản chất mình thấy nó giống kiểu 2/ nhưng có lẽ các FW hỗ trợ HMVC thì sẽ có nhiều lợi thế về performance hơn. 
Reply all
Reply to author
Forward
0 new messages