2009-11-03 20 views
6

Tôi chưa bao giờ thực sự đánh giá cao ORM vì vậy tôi nghĩ rằng cách duy nhất để khắc phục điều này là xây dựng một bản thân cơ bản để tôi có thể thấy tất cả những gì là hubbub. Vì vậy, với điều đó trong tâm trí, các tính năng cơ bản tôi sẽ cần phải bao gồm để thực hiện một ORM bán có thể sử dụng là gì?Các tính năng cần thiết khi xây dựng ORM bằng PHP?

Theo như tôi có thể nói, nó về cơ bản sẽ cần phải làm việc như thế này cho các lập trình viên cuối:

/* 
* Create a user 
*/ 
$user = new User(); 
$user->name = 'Joe'; 
$user->email = '[email protected]'; 
$user->save(); 
unset($user); 

/* 
* Create a game 
*/ 
$game = new Game(); 
$game->name = 'soccer'; 
$game->save(); 

/* 
* Set all users as players 
*/ 
$users = ORM::factory('users'); 
$users = $users->findAll(); 
foreach ($users as $user) { 
    $user->setGame($game); 
    $user->save(); 
} 
unset($users); 

/* 
* Get all games and show all users 
*/ 
$games = ORM::factory('games')->findAll(); 
foreach($games as $game) { 
    print $game->name; 
    print 'Users in game:'; 
    foreach($game->users as $user) { 
     print $user->name; 
    } 
} 

Mỗi lớp mô hình sẽ mở rộng các lớp ORM trong đó sẽ có tất cả các phương pháp cơ bản

  • find ($ id)
  • FindAll ($ ở đâu)
  • tiết kiệm()

tính năng hữu ích khác sẽ là những thứ như:

  • Có thể yêu cầu hàng với một id nhất định User::find(34)
  • Có khả năng hạn chế dòng kết quả với ĐÂU như tùy chọn
  • Có thể để buộc một đối tượng hàng để nhiều hàng từ một bảng khác. (1 đến nhiều)
  • Xây dựng truy vấn để SQL được viết tự động.

Bất kỳ ai khác có thể cho tôi biết những gì tôi cần. Tôi đã xem một số thư viện như Doctrine, EZPDO, dORMKohanaPHP nhưng dường như tôi không thể tìm thấy thư viện dễ tiêu hóa để tìm ra danh sách tính năng cần để giải quyết dự án này.

Tôi đã tìm thấy một số image detailing một số dịch vụ của Ruby và một số thông tin khác về Dự án IgnitedRecord.

Trả lời

-1

Hãy đảm bảo rằng bạn có thể xử lý nhiều mối quan hệ.

+0

Thật là một ví dụ về này sẽ là gì? – Xeoncross

+2

Bạn có thể có một mô hình DB trong đó người dùng có thể thuộc về nhiều trò chơi - vì vậy, trong DB bạn sẽ không có một NGOÀI KEY duy nhất trên người dùng, bạn sẽ có bảng tham gia. ORM nên xử lý điều này bằng cách cung cấp cho người dùng-> getAllGames() hoặc một cái gì đó tương tự. Ngoài ra để suy nghĩ về: 1. Cung cấp khả năng tải các trò chơi liên quan đến tải hoặc háo hức khi tải người dùng 2. Cung cấp khả năng lưu tất cả các trò chơi liên quan khi lưu người dùng. –

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