sınıf içinde extends edilmiş sınıfın fonksiyonuna değer atama
define("HOST", $host);
define("DBNAME", $dbname);
define("UNAME", $dbuser);
define("PASSWD", $dbpass);
define("CHARSET", $dbcharset);
class HasDB extends PDO
{
public function __construct()
{
try {
parent::__construct("mysql:host=" . HOST . ";dbname=" . DBNAME, UNAME, PASSWD);
$this->query('SET CHARACTER SET ' . CHARSET);
$this->query('SET NAMES ' . CHARSET);
$this->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$this->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
} catch (PDOException $error) {
$error->getMessage();
}
}
}
bu şekilde bir sınıf tanımladım.
kullanırken
$vt = new HasDB();
$vt->query("SELECT * FROM tabloadi")->fetch(PDO::FETCH_ASSOC);
şeklinde kullanıyorum diyelim sondaki fetch(PDO::FETCH_ASSOC) fonksiyonuna ben
result(); yazdığımda erişmek istiyorum.
yani
$vt = new HasDB();
//bunun yerine
$vt->query("SELECT * FROM tabloadi")->fetch(PDO::FETCH_ASSOC);
//böyle kullanmak istiyorum
$vt->query("SELECT * FROM tabloadi")->result();
bunu nasıl yapabilirim.?
sınıfın içine
public function result()
{
return $this->fetch(PDO::FETCH_ASSOC);
}
şeklinde yaptım hata aldım.
geriye $this
return edip chain işlemini yapman gerekiyor. şöyle dener misin.
<?php
class HasDB extends PDO
{
public $sql = '';
public function __construct()
{
try {
parent::__construct("mysql:host=" . HOST . ";dbname=" . DBNAME, UNAME, PASSWD);
$this->query('SET CHARACTER SET ' . CHARSET);
$this->query('SET NAMES ' . CHARSET);
$this->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$this->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
} catch (PDOException $error) {
$error->getMessage();
}
}
public function query($query){
$this->sql = $query;
return $this;
}
public function result(){
return $this->query($this->sql)->fetch(PDO::FETCH_ASSOC)
}
}