PHP İç İçe Class
Merhaba, PHP OOP ile bi site yazmaya çalışıyorum ve bir yerde takıldım. Bu yüzden soru sormak istiyorum.
DB Class'ım:
class DB {
function __construct($host, $dbname, $username, $password) {
try {
parent::__construct("mysql:host=". $host .";dbname=". $dbname .";charset=utf8", "". $username ."", "". $password ."");
$this->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$this->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
} catch (PDOException $e) {
$this->showError($e);
}
}
function select($sql, $values) {
try {
$query = $this->prepare($sql);
$query->execute($values);
if($query->rowCount()) {
return $query->fetch(parent::FETCH_ASSOC);
}
return false;
} catch(PDOException $e) {
$this->showError($e);
}
}
}
Burada da init.php'de DB class'ını çağırıyorum.
$db = new DB($config["db"]["host"], $config["db"]["name"], $config["db"]["user"], $config["db"]["password"]);
Benim istediğim şey yeni bir class'a DB classını kalıtım ile almak. Bunu yaparken bağlantı bilgilerini yeniden yazmak istemiyorum ama.
Yani bu şekilde kullanmak istiyorum:
class User extends DB {
function isLogin() {
if($_SESSION["user_id"]) {
return $this->select("SELECT * FROM `users` WHERE user_id = ?", [$user_id]);
}
return false;
}
}
Ama hata alıyorum. Bunun bir yolu var mıdır?
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (2)
User sınıfını DB sınıfından extend edebilmenin yolu DB'nin construct metodunu User'da çağırmaktır. Diğer türlü DB'de construct metodu olduğu için User metodunun hata vermesi normal.