Привет, ребята, так что я совершенно новичок в объектно-ориентированном PHP - я прочитал несколько учебных пособий, но не могу найти ничего, что действительно касается работы с базой данных с классами PHP.
Я пытаюсь сделать что-то простое - краткий класс новостей.Вы получаете сообщение из базы данных и т. Д. Однако я получаю сообщение об ошибке всякий раз, когда пытаюсь взаимодействовать с базой данных.
Я прочитал, что PDO - это путь к OO PHP;С этой целью я разработал класс базы данных, как подробно описано в этом посте: Использование PDO в классах
class Database
{
public $db; // handle of the db connexion
private static $dsn = "mysql:host=localhost;dbname=test";
private static $user = "admin";
private static $pass = "root";
private static $instance;
public function __construct ()
{
$this->db = new PDO(self::$dsn,self::$user,self::$pass);
}
public static function getInstance()
{
if(!isset(self::$instance))
{
$object= __CLASS__;
self::$instance=new $object;
}
return self::$instance;
}
// others global functions
}
Затем я пытаюсь использовать его в своем классе PHP, вЧтобы получить данные в новостной ленте:
<?php
require_once "database.php";
class news extends Database
{
private $title;
private $author;
private $date;
private $content;
private $category;
function __construct($id)
{
$db = Database::getInstance();
$query = $this->db->prepare("SELECT title, author, date, content, category FROM news WHERE id = :id LIMIT 1");
$query->bindParam(":id", $this->id, PDO::PARAM_INT);
if ($query->execute())
{
$result = $query->fetch(PDO::FETCH_OBJ);
$this->set_title($result->title);
$this->set_author($result->author);
$this->set_date($result->date);
$this->set_content($result->content);
$this->set_category($result->category);
}
}
<...>
?>
Каждый раз, когда я пытаюсь запустить этот скрипт, я получаю следующую ошибку:
Неустранимая ошибка: вызов функции-члена prepare () для необъекта в /news.class.php в строке 16
Есть идеи?