Есть класс для работы database
class Database_Connect{
private $db;
function __construct($db_mysql, $db_user, $db_pass){
$this->db = new PDO($db_mysql, $db_user, $db_pass);
$this->db -> exec("SET NAMES UTF8");
}
function Database($request, $array){
$a = $this->db->prepare("$request");
if($array !== false){
$a->execute($array);
}
else{
$a->execute();
}
return $a;
}
}
$database = new Database_Connect('mysql:host=localhost;dbname=x','x','x');
Выводим имена (для проверки)
$request = "SELECT `name` FROM `test` LIMIT 50";
$array = false;
$a = $database->Database($request, $array);
foreach ($a as $row)
{
echo $row['name'] . "<br/>";
}
Все работает, но если мне нужно использовать базу в различных функциях, область видимости $database теряется, создавать новый объект каждый раз?
Добавлено---- 1 ----
можно использовать $GLOBALS["database"], но это не совсем то, так как думаю есть более правильные варианты
---- 2 ----
Оператор разрешения области видимости (::)
-скоро выложу пример, работает
<?php
class Database_Connect{
private static $db;
function __construct($db_mysql, $db_user, $db_pass){
self::$db = new PDO($db_mysql, $db_user, $db_pass);
self::$db -> exec("SET NAMES UTF8");
}
function Database($request, $array){
$a = self::$db->prepare($request);
if($array !== false){
$a->execute($array);
}
else{
$a->execute();
}
return $a;
}
}
$db_mysql = 'mysql:host=localhost;dbname=x';
$db_user = 'x';
$db_pass = 'x';
$start_Database_Connect = new Database_Connect($db_mysql, $db_user, $db_pass);
$request = "SELECT `room` FROM `test` LIMIT 50";
$array = false;
$a = Database_Connect::Database($request, $array);
foreach ($a as $row)
{
echo $row['room']."<br/>";
}
function Infunction(){
$request = "SELECT `name` FROM `test` LIMIT 50";
$array = false;
$a = Database_Connect::Database($request, $array);
foreach ($a as $row)
{
echo $row['name']."<br/>";
}
}
Infunction();
?>
Описание: создаем объект класса, передаем данные для подключения к базе, срабатывает конструктор, PDO и кодировка, $db static и обращаемся к ней через
self:: и сам вызов функции Database_Connect::Database($request, $array); из любого места в коде