- Using PDO database class within other PHP classes
- class db {
- private $host;
- private $username;
- private $password;
- private $con;
- private $pdo;
- public function __construct( $database = "dnname" )
- {
- $this->host = "localhost";
- $this->username = "username";
- $this->password = "pass";
- $conStr = "host={$this->host};dbname={$database}";
- try {
- $this->pdo = new PDO( "mysql:$conStr", $this->username, $this->password );
- $this->pdo->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
- }
- catch( PDOException $e ) {
- echo "error ". $e->getMessage();
- }
- }
- public function fetch_single_row($sql, $data)
- {
- if( $data !== null )
- $data = array_values( $data ); // Incase it's an associative array
- $sel = $this->pdo->prepare( $sql );
- $sel->execute( $data );
- $sel->setFetchMode( PDO::FETCH_OBJ );
- $obj = $sel->fetch();
- return $obj;
- }
- class cms {
- function cms(){
- $this->db = new db();
- }
- function is_admin($id) {
- if($this->db->fetch_single_row("SELECT id FROM user WHERE id = ? LIMIT 1", array($id))){
- return true;
- } else {
- return false;
- }
- }
- include("db.class.php");
- include("cms.class.php");
- $cms = new cms();
- if($cms->is_admin($id)){
- //code here
- }
- abstract class DB
- {
- protected static $instance;
- protected $db;
- protected static $host = 'host';
- protected static $user = 'user';
- protected static $pass = 'pass';
- protected static $database;
- public static function getInstance()
- {
- if (!isset(self::$instance)) self::$instance = new static();
- return self::$instance;
- }
- protected function __construct()
- {
- $this->db = new PDO(sprintf('mysql:host=%s;dbname=%s', static::$host, static::$database), static::$user, static::$pass);
- $this->db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
- }
- public static function db()
- {
- return static::getInstance()->db;
- }
- public function fetch_single_row($sql, $data)
- {
- if( $data !== null )
- $data = array_values( $data ); // Incase it's an associative array
- $sel = self::db()->prepare( $sql );
- $sel->execute( $data );
- $sel->setFetchMode( PDO::FETCH_OBJ );
- $obj = $sel->fetch();
- return $obj;
- }
- }
- class Main extends DB
- {
- protected static $database = 'db';
- }
- $db = Main::getInstance();
- $obj = $db->fetch_single_row($sql, $data);