我的课程看起来像这样:
class Database
{
const DB_HOST = "localhost";
const DB_NAME = "office";
const DB_USERNAME = "root";
const DB_PASSWORD = "root";
public $connection;
function Database()
{
$this->connection = new PDO("mysql:host=".Database::DB_HOST.";dbname=".Database::DB_NAME, Database::DB_USERNAME, Database::DB_PASSWORD);
}
}
我想使用$database = new Database();
我的问题是功能找不到它。
我宁愿不使用GLOBAL $database
也不要使用$_SESSION
来解决它。
我错过了其他任何方式?
答案 0 :(得分:0)
你可以做的是制作一个Singleton类 但是因为PDO使用来自池的连接,所以构建新的PDO非常非常轻量级,我认为这只是重建新PDO(或数据库)的一个好习惯
class Database {
private static $instance = null;
private __construct() {
}
public static function getInstance() {
if(self::$instance === null) {
self::$instance = new Database();
}
return self::$instance;
}
}
您可以使用
到达该对象$database = Database::getInstance(); //this wil not construct a new Database object
仍然我真的不鼓励这种方法,因为构建一个新的PDO对象是如此轻量级,你甚至不会注意到差异
更多信息,请访问 http://en.wikipedia.org/wiki/Singleton_pattern
只是发布PDO的一个例子 请参阅:How to close a PDO handle
for($i = 0; $i < 1000; $i++) {
//This happens somewhere in the loop
$pdo = new PDO('mysql:host=localhost;dbname=test', $user, $pass, array(
PDO::ATTR_PERSISTENT => true
));
//use $pdo
unset($pdo); //This will release your connection and returns it to the pool
}
答案 1 :(得分:-1)
你想在这里使用构造函数
class Database
{
public $conn;
public function __construct()
{
$DB_HOST = '';
$DB_NAME = '';
$DB_USERNAME = '';
$DB_PASSWORD = '';
$this->conn= new PDO("mysql:host=".$DB_HOST.";dbname=".$DB_NAME, $DB_USERNAME, $DB_PASSWORD);
}
}