Mysql
 sql >> база данни >  >> RDS >> Mysql

Препоръчителен начин за предаване на връзка за данни към PHP клас/метод?

Предаването на низ за връзка към вашите класове има много недостатъци и никакви предимства. Вие сте на прав път, но искате да предадете обекта на базата данни вместо низ за връзка.

Инжектирането на зависимости е добър начин да дадете на вашите класове достъп до базата данни, което просто означава да прехвърлите зависимости (т.е. обект на база данни) към обектите, които се нуждаят от тях, вместо самият обект да получава зависимостта от някакъв вид глобална променлива.

Предлагам ви да използвате метод като setDb() на вашите класове, за да предадете обектите на базата данни и след това да го съхраните като свойство за всяка вътрешна употреба.

Например, ако приемем, че сте създали обекта на базата данни $db в скрипт за инициализация:

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 ви дава предимствата, които споменахте:възможността лесно да превключвате db, без да се налага да вършите много работа във вашите методи. Има и други предимства, а именно лекота на тестване.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Стойността на часовата зона на сървъра „AEST“ е неразпозната или представлява повече от една часова зона

  2. Заобиколно решение за търсене в пълен текст в MySQL за innoDB таблици

  3. Информация за базата данни information_schema в MySQL

  4. Python flask.ext.mysql е отхвърлен?

  5. Създаване на MySQL временна таблица, след което присвояване на CRUD от нея