У меня возникла проблема с пониманием этого. Я хотел бы начать переписывать старый код функции MySQL PDO. Образом она была создана, в том, что внешний файл, содержащий эту линию (среди прочего):PDO включение в класс
// db.php file
$DB = new dbConnect(SERVER,DB,USER,PASSWORD,3306);
function my_autoloader($class)
{
require_once ($_SERVER['DOCUMENT_ROOT']."/includes/".'class.' . $class . '.php');
}
spl_autoload_register('my_autoloader');
Какой бы создать подключение к моей базе данных. Это включено в самую верхнюю часть моих страниц, а также загружать все мои классы. Теперь, если я хочу, чтобы создать новое соединение с использованием PDO, я хотел бы сделать следующее:
$conn = new PDO('mysql:host='.SERVER.';dbname='.DB.';charset=utf8',USER, PASSWORD);
Однако, я не могу эту строку кода в отдельном файле и вызвать PDO внутри класса, как следующее:
require_once 'db.php';
class info
{
protected $ID;
public function __construct($id)
{
$this->ID = $id; //
}
public function getName()
{
$query = "SELECT * FROM job";
$q = $conn->query($query);
$data = $q->fetch(PDO::FETCH_ASSOC);
//do something with $data
}
}
Означает ли это, что мне нужно установить соединение в конструкторе посредством агрегации, как показано ниже?
require_once 'db.php';
class info
{
protected $ID;
protected $pdo;
public function __construct($id)
{
$this->ID = $id; //
$this->pdo = new PDO('mysql:host='.SERVER.';dbname='.DB.';charset=utf8',USER, PASSWORD);
}
public function getName()
{
$query = "SELECT * FROM job";
$q = $this->pdo->query($query);
$data = $q->fetch(PDO::FETCH_ASSOC);
// do something
}
}
Или есть другой способ сделать это, о котором я не знаю. Кажется утомительным, пытаясь переписать все мои классы, чтобы включить это.
+1 за то, что вы решили переписать свои функции mysql_ *! –
Возможный дубликат [Как правильно настроить соединение PDO] (http://stackoverflow.com/questions/11369360/how-to-properly-setting-up-pdo-connection) –