Kết nối mysqli đủ dễ dàng để chia sẻ giữa các phiên bản bằng cách tạo nó một lần trong tệp bootstrap của bạn và sau đó chuyển nó đến các phiên bản cần nó, ví dụ:
$mysqli = new mysqli(/* connection params */);
$someClassUsingMySqli = new SomeClassUsingMySqli($mysqli);
$anotherClassUsingMySqli= new AnotherClassUsingMySqli($mysqli);
Điều đó sẽ giới hạn hiệu quả kết nối thành một và bạn không cần phải sử dụng đến các khối cầu bên trong các đối tượng của mình. Điều này được gọi là Dependency Injection và nên là cách ưa thích của bạn để gán các phụ thuộc cho các đối tượng. Nó làm cho các phụ thuộc trở nên rõ ràng và dễ dàng hoán đổi và do đó mang lại lợi ích cho việc thay đổi, thử nghiệm và bảo trì.
Đối với Tác vụ Nhập và Xuất của bạn, tôi tự hỏi tại sao bạn lại làm việc này bằng PHP. Nó rõ ràng là cùng một máy chủ cơ sở dữ liệu, vì vậy bạn chỉ có thể thực hiện nó bên trong phiên bản MySql của mình. Nếu bạn muốn làm điều đó với PHP, tôi có thể làm như sau:
class MigrateForum
{
private $dbConnector;
public function __construct(DBConnector $dbConnector)
{
$this->dbConnector = $dbConnector;
}
public function migrate()
{
// orchestrate the migration (consider transactions)
$this->exportOldForum();
$this->importNewForum();
}
private function exportOldForum()
{
// code to export old_database_name.table_name
}
private function importOldForum()
{
// code to import new_database_name.table_name
}
}
Bạn có thể trích xuất các phương thức Nhập và Xuất thành các Lớp của riêng chúng và sau đó sử dụng một số loại Tổng hợp Mẫu lệnh , nhưng điều đó thực sự phụ thuộc vào việc bạn cần mô-đun này như thế nào.