Loading models cần thiết cho từng action (cakePHP)


http://www.milesj.me/blog/read/16/loading-models-specific-to-certain-actions

Trong cakePHP, một controller có thể điều khiển rất nhiều models, đồng nghĩa với việc thời gian nạp các models đó rất lớn (cakePHP performance tốn nhiều thời gian để nạp các models).

Tuy nhiên các models của một controller lại thường không sử dụng hết trong một actions => Thừa.

Vì vậy, có một giải pháp để “chỉ nạp các models cần thiết trong một action” như sau:

/** * Executed before each action */

function beforeFilter() {

parent::beforeFilter();

// Load action specific models

switch ($this->params[‘action’]) {

case ‘friends’:

$models = array(‘Friend’);

break;

case ‘messages’:

$models = array(‘Message’);

break;

case ‘blog’:

$models = array(‘Entry’, ‘Comment’);

break;

}

if (!empty($models)) {

foreach ($models as $model) {

$this->loadModel($model);

}

}

}

Việc này sẽ tăng performance của cakePHP lên khi controller của bạn sử dụng nhiều models. Cách tổ chức model như CakePHP với nhiều ràng buộc và kiểm tra dữ liệu khiến cho việc xử lý chương trình trở nên nặng nề hơn.

Gửi phản hồi

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Log Out / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Log Out / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Log Out / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Log Out / Thay đổi )

Connecting to %s