sql >> Database >  >> RDS >> Mysql

Aanbevolen manier om gegevensverbinding door te geven aan een PHP-klasse / -methode?

Het doorgeven van een verbindingsreeks aan uw klassen heeft veel nadelen en geen voordelen. U bent op de goede weg, maar u wilt het database-object doorgeven in plaats van een verbindingsreeks.

Dependency Injection is een goede manier om uw klassen toegang te geven tot de database, wat simpelweg betekent dat u afhankelijkheden (dwz database-object) moet doorgeven aan de objecten die ze nodig hebben, in plaats van dat het object zelf de afhankelijkheid verkrijgt van een of andere globale variabele.

Ik stel voor dat je een methode gebruikt zoals setDb() op uw klassen om de database-objecten door te geven en deze vervolgens op te slaan als een eigenschap voor intern gebruik.

Bijvoorbeeld, ervan uitgaande dat u het databaseobject $db . hebt gemaakt in een initialisatiescript:

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 biedt u de voordelen die u noemde:de mogelijkheid om eenvoudig van db te wisselen zonder dat u veel werk aan uw methoden hoeft te doen. Er zijn nog andere voordelen, namelijk het gemak van testen.



  1. varchar(max) overal?

  2. CHARTOROWID() Functie in Oracle

  3. Implementatie van de meest bekeken functiedatabase

  4. Verwijzing naar groepen in een MySQL-regex?