PHP ile işlevleri Access veritabanı değişken

3 Cevap php

Ben PHP için oldukça yeni ve benim bir çok fonksiyonu veritabanına erişim gerektiren bulduk. Sorun şu anda öyle gibi her sayfanın üst kısmında gerektiren bir dosyada veritabanına bağlamak:

$db = new mysqli("localhost", "my_user", "my_password", "world");

Ben bulmak sorun ben ona $ db değişken ... çalışıyor geçmek Ben bir işlev içinde erişmek istediğinizde daha sonra, ancak daha kolay bir yolu var mı?

3 Cevap

(Iyi değil ama) en kolay yolu her işlev 'global' anahtar kelime eklemektir. Örnek:

$db = new mysqli("localhost", "my_user", "my_password", "world");
function foo() {
  global $db;
  $db->query(....
}

Çok daha iyi bir şekilde kendi sınıf my_db oluşturmak ve tek olarak tanımlamak için. Sonra my_db bir örneği olarak db nesne aramak mümkün olacak.

class My_DB {
  protected $_db = null;

  protected static $instance = null;

  protected function __construct() {
    $this->_db = new mysqli("localhost", "my_user", "my_password", "world");
  }

  public static function getInstance() {
    if (empty(self::$_instance)) {
      self::$_instance = new self();
    }
    return self::$_instance;
  }
}

Ve sonra herhangi bir yere kodu aşağıdakileri yapabilirsiniz:

function foo() {
  $db = My_DB::getInstance();
  $db->query(....
}

Sen $db nesnesi, örneğin üzerindeki fonksiyonların olarak çağırabilirsiniz $db->query(...).

doctrine bir göz atın. Orada rampa yukarı biraz ama çok güzel.

Aksi takdirde sayfalarında dahil etme dosyasında bu kodu koymak ve include "db.php";. Tercih size 1 size siteniz için gereken her şeyi alır içerme dosyası var ve orada $db kodunu ekleyin.

Eğer gerçekten yapmak, hızlı ve kirli olmak istiyorsanız $db küresel ve o zaman her yerde erişebilirsiniz. Bu harika kodlama uygulama değildir.