2011-12-13 2 views
10

Con đường tôi tạo ra mô hình CodeIgniter vào lúc này là (tức là không có nhà xây dựng, sau khi vượt qua userID tất cả các thời gian và hạn chế đến một đối tượng):Làm thế nào tôi có thể sử dụng các mô hình hướng đối tượng thích hợp trong CodeIgniter với các hàm tạo?

$this->load->model('User'); 
$this->user->set_password($userID, $password); 

nhưng tôi muốn làm điều đó như thế này:

$this->load->model('User'); 
$User = new User($userID); 
$User->set_password($password); 

CẬP NHẬT: Có lẽ chỉ một mô hình người dùng là một ví dụ kém.

Ví dụ, nếu tôi có một danh sách mua sắm có các mục khác nhau Tôi muốn sử dụng PHP theo cách này:

$this->load->model('List'); 
$this->load->model('Item'); 

$List = new List(); 
$items[] = new Item($itemName1, $itemPrice1); 
$items[] = new Item($itemName2, $itemPrice2); 

$List->add_items($items); 

CodeIgniter cảm thấy về cơ bản bị phá vỡ trong việc xử lý PHP OO theo cách này. Có ai có bất kỳ giải pháp mà vẫn có thể sử dụng superobject trong mỗi mô hình?

+2

Bạn chỉ cần ủng hộ sử dụng các nhà điều hành mới? – Harsh

+0

Codeigniter sử dụng một superobject lớn gọi là CI. Tôi không nghĩ là một ý tưởng hay khi thêm các đối tượng mới vào khung công tác đó. Trong mọi trường hợp, họ nên được thừa hưởng từ anh ta. –

+0

Tôi muốn lưu trữ các đối tượng trong các đối tượng khác –

Trả lời

13

Bạn có thể làm điều đó như bình thường:

require_once(APPPATH.'models/User.php'); 
$User = new User($userID); 

Hoặc, bạn có thể dựa trên một mô hình bảng cấp để trả về một mô hình kỷ lục cấp:

$this->load->model('users_model'); // users (plural) is the table-level model 
$User = $this->users_model->get_user($userID); 

Trong khi đó, trong users_model

require_once(APPPATH.'models/User.php'); 

public function get_user($userID) 
{ 
    // get a record from the db 
    // map record to model 
    // return model 
} 
0

bạn có thể subclass mô hình hoặc chỉ thêm điều gì đó trong constructor Tôi nghĩ rằng bạn cần phải điều chỉnh mã để làm điều đó theo cách mà bạn đang tìm kiếm để ...