Tôi đã mã hóa với CodeIgniter một lúc và khi tôi lập trình hoặc đọc mã của lập trình viên khác, tôi thường gặp hai cách để lấy dữ liệu từ đầu vào. Người ta sẽ nhận được đầu vào từ bộ điều khiển, sau đó đi qua với mô hình như một tham số, như vậy:
class MyController extends Controller
{
.
.
.
public function login()
{
$username = $this->input->post('username');
$password = $this->input->post('password');
$this->load->model('User');
$this->User->login($username, $password);
}
}
class User extends Model
{
.
.
.
public function login($username, password)
{
....
}
}
khác sẽ được truy cập trực tiếp từ Model các thông số đầu vào, như vậy:
class MyController extends Controller
{
.
.
.
public function login()
{
$this->load->model('User');
$this->User->login();
}
}
class User extends Model
{
.
.
.
public function login()
{
$username = $this->input->post('username');
$password = $this->input->post('password');
}
}
Bạn nghĩ thực hành nào tốt hơn? Tôi nghiêng về phía trước, vì nó mang lại cho Mô hình độc lập hơn, nhưng tôi thấy phương pháp thứ hai trong sample codes và trong các nhà phát triển khác. Phải thừa nhận rằng, phương pháp thứ hai ngắn hơn, đặc biệt là khi bạn chấp nhận 5-10 trường nhập.
Mặc dù CodeIgniter không phải là khung MVC thực, bạn không nên truy cập phần tử xem hoặc bộ điều khiển trong mô hình (giống như trong khung MVC thực). –