v2.5.2
Giriş yap

PHP İç İçe Class

Anonim
616 defa görüntülendi

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
1431 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.