안녕하세요, 저는 완전히 객체 지향 PHP에 익숙합니다 - 자습서를 읽었지만 실제로 PHP로 데이터베이스 작업을하는 것을 찾을 수 없습니다 수업.PHP 클래스 데이터베이스 상호 작용 (PDO 사용)
저는 간단한 뉴스 게시 클래스를 만들기 위해 노력하고 있습니다. 데이터베이스 등에서 게시물을 가져옵니다. 그러나 데이터베이스와 상호 작용할 때마다 오류가 발생합니다.
나는 PDO가 OO PHP를 사용하는 방법이라고 읽었습니다. 이 게시물에 설명 된대로이를 위해, 나는 데이터베이스 클래스를 개발했습니다 : Use of PDO in classes
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);
}
}
<...>
?>
때마다 나는 다음과 같은 오류가 발생하지만이 스크립트를 실행하려고 :
치명적인 오류 : 라인 16 /news.class.php에 비 객체()를 준비하는 멤버 함수를 호출
아이디어가 있으십니까?
사이드 노트 : 데이터베이스 클래스를 싱글 톤 (즉, xx :: getInstance())으로 구현하려는 경우 __construct()를 비워 두거나 private로 설정하여 getInstance()가 액세스 할 수있는 유일한 방법입니다. 그렇지 않으면 재미있는 인스턴스화가있는 일반 클래스 일뿐입니다. – tadamson