Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Benar menggunakan kelas di kelas lain di php?

Ada beberapa cara untuk melakukannya. Variabel global tentu salah satu cara dan yang paling dipandang rendah juga. Anda dapat membuat Singleton dan semua kelas lain yang membutuhkan akses database akan memanggil singleton ini.

final class Database {
    private static $connection;

    public static function getInstance() {
        if(self::$connection == NULL) {
            self::$connection = // init your database connection
        }
        return self::$connection;
    }
}

Dan gunakan objek koneksi database ini di kelas apa pun yang membutuhkannya.

class Application {
    public function displayVar() {
        echo 'hello world';
    }
    public function getVar() {
        $db = Database::getInstance();
        $sql = foo;
        $db->query($sql);
    }
}

Ini semua baik untuk permulaan dan langkah besar selain menggunakan variabel global, tetapi Anda dapat melakukannya lebih baik dengan Injeksi Ketergantungan . Injeksi Ketergantungan adalah konsep sederhana bahwa jika suatu kelas memiliki dependensi eksternal, seperti koneksi database dalam contoh Anda, Anda secara eksplisit meneruskannya ke kelas yang membutuhkan dalam konstruktor atau metodenya. Jadi kode baru akan terlihat seperti solusi Jonathan. Keuntungan utama menggunakan injeksi ketergantungan adalah dalam pengujian unit, di mana Anda dapat dengan mudah mengganti objek database aktual ini dengan objek tiruan dan menyebarkannya kepada siapa pun yang membutuhkannya.

class Application {
    private $db;

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

    public function displayVar() {
        echo 'hello world';
    }

    public function getVar() {
        $sql = foo;
        $this->db->query($sql);
    }
}

Untuk proyek yang lebih kecil, Anda dapat melakukannya sendiri dengan mudah. Untuk proyek besar, ada berbagai DI frameworks tersedia untuk PHP



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bersyarat dalam MYSQL di mana klausa

  2. Bagaimana cara memilih dari dua tabel di MySQL meskipun tidak semua baris dalam satu tabel memiliki koresponden di tabel lainnya?

  3. membangun aplikasi berbasis Peran

  4. Membuat tabel mysql dengan set karakter default eksplisit, bagaimana jika tidak?

  5. Sisipkan ke semua sel saat catatan lebih dari satu PHP