2009-11-17 38 views
5

Có thể ai đó có thể giải thích tại sao trên trái đất CakePHP có quy ước sử dụng tên số nhiều cho các bảng db và bộ điều khiển và số ít cho các mô hình? Tại sao không phải lúc nào cũng sử dụng các thuật ngữ số ít, hoặc luôn luôn số nhiều? Đối với tôi, có vẻ khó hiểu khi phải luôn nghĩ "bây giờ tôi sử dụng số nhiều hay số ít ở đây?" (Hoặc là có một cách dễ dàng để nhớ ??) Và sau đó bạn có các bảng tham gia sử dụng một sự kết hợp của cả hai!Tại sao CakePHP sử dụng các quy ước đặt tên số nhiều/số ít khác nhau?

Tôi cho rằng có lý do chính đáng ở đâu đó, nhưng chỉ không gặp phải điều đó.
(Tôi thực sự hy vọng nó không phải chỉ vì Ruby-on-Rails hoạt động theo cách đó.)

Simon.

+2

Có thể IS vì ruby ​​trên đường ray :) –

+1

Không có ý tưởng. Chúng tôi luôn sử dụng các trường tùy chọn 'tên', 'bảng' và 'primaryKey' (xem tài liệu mô hình) để đặt tên cho những thứ chúng tôi muốn. Chúng tôi tận dụng những gì chúng tôi muốn, khi chúng tôi muốn, và để lại mọi thứ số ít. Khác hơn thế, mặc dù, tôi thực sự thích bánh. – nilamo

+0

Cũng có thể do CakePHP được thiết kế bởi những người sử dụng PHP không phù hợp với định nghĩa. –

Trả lời

10

CakePHP Conventions

ước CakePHP của đã được cất ra khỏi năm kinh nghiệm phát triển web và thực hành tốt nhất. Mặc dù chúng tôi khuyên bạn nên sử dụng các quy ước này trong khi phát triển với CakePHP, chúng tôi nên đề cập rằng nhiều nguyên lý này dễ bị ghi đè - một thứ đặc biệt hữu ích khi làm việc với các hệ thống cũ.

Tôi nghĩ rằng ý tưởng là làm cho thông thạo hơn để đọc và suy nghĩ về các yếu tố theo đúng cách. Các bảng cơ sở dữ liệu luôn luôn là số nhiều, bởi vì chúng chứa nhiều bản ghi. Mô hình này là số ít, bởi vì bạn nên suy nghĩ về việc tìm kiếm một bản ghi duy nhất với nó. Trường chọn cho model_id sẽ tự động nhận các tùy chọn từ $models, bởi vì bạn chọn một trong nhiều tùy chọn.

$model = $this->Model->find('first'); // reads like English 
$model = $this->Models->find('first'); // slightly trips you up 

$models = $this->Model->find('all'); // works okay 
$models = $this->Models->find('all'); // more logical, but "this models" still trips 

Nó không phải lúc nào cũng hoàn hảo, nhưng tôi nghĩ rằng đó là một hội nghị khá hay khi bạn quen với nó. Tôi có thể thấy nó có thể khó hiểu như thế nào ngay từ đầu.

+2

Đồng ý. mô hình là một trừu tượng cho chế độ dữ liệu của bạn, và trong tiếng Anh những người luôn luôn là số ít (bạn không nói "bản chất của xe hơi" là gì). Bộ điều khiển xử lý nhiều phiên bản trừu tượng (nó sắp xếp tất cả chúng). IMO nó khá phù hợp với cách chúng tôi làm những thứ bằng tiếng Anh. –

4

có cách nào dễ nhớ không?

Vâng, đối với những phần nơi quy ước đặt tên đếm (db/mô hình/controller) ... Nếu nó không phải là tên của một mô hình (ví dụ. User) hoặc tên của một chính nước ngoài (ví dụ với. user_id), sau đó là số nhiều. Tất cả mọi thứ về cơ bản là số nhiều ngoài hai điều đó.

Các vấn đề liên quan