sql >> Base de Datos >  >> RDS >> Mysql

Reutilizar la herencia de objetos PHP de la conexión MySQL

La conexión mysqli es bastante fácil de compartir entre instancias al crearla una vez en su archivo de arranque y luego pasarla a las instancias que la necesitan, por ejemplo,

$mysqli = new mysqli(/* connection params */);
$someClassUsingMySqli = new SomeClassUsingMySqli($mysqli);
$anotherClassUsingMySqli= new AnotherClassUsingMySqli($mysqli);

Eso limitará efectivamente la conexión a uno y no necesita recurrir a globales dentro de sus objetos. Esto se llama inyección de dependencia y debería ser su forma preferida de asignar dependencias a los objetos. Hace que las dependencias sean explícitas y fáciles de intercambiar y, por lo tanto, beneficia el cambio, las pruebas y el mantenimiento.

En cuanto a su tarea de importación y exportación, me pregunto por qué está haciendo esto en PHP. Aparentemente es el mismo servidor de base de datos, por lo que podría hacerlo dentro de su instancia de MySql. Si quieres hacerlo con PHP, probablemente haría algo como esto:

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 
    }
}

Puede extraer los métodos de importación y exportación en sus propias clases y luego usar algún tipo de Compuesto Patrón de comandos , pero eso realmente depende de qué tan modular necesites que sea.