[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Два вопроса по классу
abdula81
Ребята, здарова. Нужна помощь. Дали ДЗ сделать каркас приложения, свой велосипед. Чтобы оно регистрировало DB, GET, POST, SESSION и еще пару методов, пока что не таких важных. У меня два вопроса:

1. Почему переменная $this->db позволила переназначить себя? в классе Main. Она ведь protected у родителя.

2. В целом код не сильно "ужасен"?)

class App{
protected $db;
protected $get = array();
protected $post = array();

public function __construct(){
$this->db = new DB();

$obj = new regGet();
$this->get = $obj->get();
}
}



class regGet{
private $a = array();

public function __construct(){
$this->set();
}

private function set(){
if(!empty($_GET)){
foreach($_GET as $k => $v){
$this->a[$k] = $v;
}
}
}


public function get(){
return $this->a;
}
}



class DB{
private $db = null;

public function __construct(){
$this->instance();
}

public function instance(){
try{
$this->db = new PDO('mysql:host=localhost;dbname=test','root','');
$this->db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}catch(PDOException $e){
die('DB ERROR');
}
}


public function query($query){
return $this->db->query($query);
}

public function prepare($query){
return $this->db->prepare($query);
}

public function __destruct(){
$this->db = null;
}
}



class Main extends App{
public function test(){
$this->db = 11111; //переназначение
var_dump($this->db);
$stmt = $this->db->query("SELECT * FROM `tab`");
return $stmt->fetchAll();
}
}
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.