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

¿Forma recomendada para pasar la conexión de datos a una clase/método PHP?

Pasar una cadena de conexión a sus clases tiene muchas desventajas y ningún beneficio. Está en el camino correcto, pero desea pasar el objeto de la base de datos en lugar de una cadena de conexión.

La Inyección de Dependencia es una buena manera de dar acceso a sus clases a la base de datos, lo que simplemente significa pasar dependencias (es decir, objeto de la base de datos) a los objetos que las necesitan, en lugar de que el objeto mismo obtenga la dependencia de una variable global de algún tipo.

Te sugiero que uses un método como setDb() en sus clases para pasar los objetos de la base de datos y luego almacenarlos como una propiedad para cualquier uso interno.

Por ejemplo, suponiendo que ha creado el objeto de base de datos $db en un script de inicialización:

class SomeClass
{
    protected $db;

    public function setDb($db)
    {
        $this->db = $db;
    }

    public function something()
    {
        // do some query on the database using $this->db
    }
}

$obj = new SomeClass();
$obj->setDb($db);

$obj->something();

DI le brinda los beneficios que mencionó:la capacidad de cambiar fácilmente la base de datos sin tener que trabajar mucho en sus métodos. Hay otros beneficios, a saber, la facilidad de prueba.