Giriş yap
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?

tayfunerbilen
49 gün önce

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.

Nasıl akıllıca soru sorulur?
Daha hızlı ve kaliteli cevaplar almak için önce nasıl soru sorulacağını bilmeniz gerekir. Eğer bilmiyorsanız bu yazı serisini okuyun.

Cevap yaz

Günlük Film Tavsiyesi