Một số chiến lược OOP để làm việc với cơ sở dữ liệu nhưng giữ cho mọi thứ có thể kiểm tra được là gì? Giả sử tôi có lớp Người dùng và môi trường sản xuất của tôi hoạt động chống lại MySQL. Tôi thấy một vài cách tiếp cận có thể, được hiển thị ở đây bằng PHP:
Truyền vào $ data_source với các giao diện cho
load()
vàsave()
, để trừu tượng hóa nguồn dữ liệu phụ trợ. Khi kiểm tra, vượt qua một cửa hàng dữ liệu khác nhau.$ user = Người dùng mới ($ mysql_data_source); $ user-> tải ('bob'); $ user-> setNickname ('Robby'); $ người dùng-> lưu ();
Sử dụng một nhà máy truy cập cơ sở dữ liệu và chuyển hàng kết quả cho hàm tạo của Người dùng. Khi kiểm tra, hãy tạo thủ công tham số $ row hoặc giả định đối tượng trong UserFactory :: $ data_source. (Làm thế nào tôi có thể lưu các thay đổi vào hồ sơ?)
class UserFactory { static $data_source; public static function fetch( $username ) { $row = self::$data_source->get( [params] ); $user = new User( $row ); return $user; } }
Tôi có Mẫu thiết kế và Mã sạch ở đây bên cạnh, nhưng tôi đang loay hoay tìm các khái niệm áp dụng.