Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Różnice w implementacjach proceduralnych i obiektowych mysql w php?

Odpowiedź, która jest lepsza to „to zależy”. Jak ze wszystkim, istnieje wiele różnych podejść i należy również pamiętać, że kod używający obiektów niekoniecznie jest zorientowany obiektowo, ale nadal można go napisać proceduralnie. W tym samym duchu kod, który nie używa obiektów, może nadal być modułowy.

Wybrałbym użycie mysqli klasę za każdym razem. Nie ma znaczącej różnicy w wydajności. Prawdopodobnie nie zdasz sobie sprawy z niektórych zalet używania klasy DB, takich jak uproszczony polimorfizm, więc moim jedynym argumentem za używaniem klasy jest to, że wolę składnię. Jednak zamiast używać mysqli bezpośrednio poleciłbym prawdopodobnie rozszerzenie lub skomponowanie go. Możesz to zrobić tylko z klasą.

class DB extends mysqli {
    public function __construct() {
        parent::__construct($_SERVER['DB_HOST'],
            $_SERVER['DB_USER'], $_SERVER['DB_PASS']);
    }
}

To bardzo płytki przykład.

Przykładem polimorfizmu, o którym mówiłem powyżej, może być coś takiego:

class User implements DAO {
    private $db;
    public function __construct(DB $db) {
        $this->db = $db;
    }
}

//Testing code is simplified compared to using it in production
class TestDB extends DB {}
new User(new TestDB);
new User(new DB);

Swoją drogą kategorycznie wolę PDO ponad mysqli



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zmienna dynamiczna aktualizacji zapytania formularza POST php

  2. Automatyczne odświeżanie tabeli bez odświeżania strony PHP MySQL

  3. Jak zablokować wiersz do wyboru w MySQL?

  4. MySQL 'UPDATE ON DUPLICATE KEY' bez unikalnej kolumny?

  5. SZEROKIE tabele mysql