Tôi đã là một lập trình viên thủ tục trong hơn 4 năm và đã đến lúc bắt đầu tìm kiếm OOP. Với điều đó nói rằng, chúng ta hãy nói rằng tôi cần phải gọi hai phương pháp trong lớp học của tôi. Mỗi phương thức đều yêu cầu kết nối với DB vì vậy đó là hai chuyến đi tới DB, cũng mở ra nhiều kết nối. Điều này có thể tránh được bằng cách có một số loại mã trong lớp ứng dụng (constructor?) Hoặc không có một hồ bơi kết nối phải được thiết lập ở phía DB? Và chỉ để đá, tôi không sử dụng mysql; Tôi đang sử dụng mongodb với codeigniter.Cách tránh mở nhiều kết nối tới DB bằng OOP PHP
Đây là những gì tôi có cho đến nay, không chắc liệu nó có lý tưởng để sử dụng không?
Đây là nơi tôi thiết lập thông tin DB của tôi:
database_conn.php
class Database_Conn extends Model {
function _connect() {
$m = new Mongo("localhost:27017", array("persist"=>"x"));
$db = $m->selectDB("foo");
return $db;
}
}
mẫu mô hình tập tin
class Home_model extends Model {
public function __construct() {
// Establish connection to "profiles" table
$this->db_conn = Database_Conn::_connect()->selectCollection("profiles");
}
function getMyProfile($username) {
$data = $this->db_conn->findOne(array("username" => $username));
return $data;
}
function getAll() {
$data = $this->db_conn->find();
return $data;
}
}
tôi nghĩ điều này là xấu đối với các ứng dụng cuối cùng cần phải mở rộng? – luckytaxi
singleton là một cách để tạo một đối tượng được khởi tạo chính xác một lần. làm thế nào nó có thể làm giảm khả năng mở rộng? xin vui lòng cho tôi biết) –
Xin lỗi, tôi đã nghĩ đến điều gì khác (không hỏi). Tôi hiểu những gì bạn đang nói, tôi thikn tôi đang làm điều đó ngay bây giờ. Hãy xem mã của tôi ở trên. Cảm ơn. – luckytaxi