esomkin
Новичок
Передача объекта в конструктор класса
Добрый вечер.
Есть класс для работы с mysql.
и есть другой класс, одним из свойств которого является объект класса DB_Mysql - db_obj
$db_obj = new DB_Mysql(MYSQL_HOST, MYSQL_LOGIN, MYSQL_PASSWORD, MYSQL_DBNAME);
...
$item_group = new item_Group($db_obj, 'item_groups');
Объясните, почему при попытке получения доступа к методу объекта $item_group например $item_group->create("test") выводится ошибка Fatal error: Call to a member function execute() on a non-object.
Только не надо писать перевод ошибки, это я уже нагуглил)
Добрый вечер.
Есть класс для работы с mysql.
PHP:
class DB_Mysql {
protected $host;
protected $login;
protected $password;
protected $db_name;
protected $db_handle;
protected $resource;
public function __construct($host, $login, $password, $db_name) {
$this->host = $host;
$this->login = $login;
$this->password = $password;
$this->db_name = $db_name;
}
protected function connect() {
$this->db_handle = mysql_connect($this->host, $this->login, $this->password);
if(!is_resource($this->db_handle)) {
exit;
}
if(!mysql_select_db($this->db_name, $this->db_handle)) {
exit;
}
}
public function execute($query) {
if(!$this->db_handle) {
$this->connect();
}
$this->resource = mysql_query($query, $this->db_handle);
}
public function insert_id() {
return mysql_insert_id($this->resource);
}
}
PHP:
class item_Group {
public $db_obj;
protected $table;
public function __constructor($db_obj, $table) {
$this->db_obj = $db_obj;
$this->table = $table;
}
public function create($name) {
$name = htmlspecialchars($name, ENT_QUOTES);
$this->db_obj->execute("INSERT INTO ". $this->table ."(name) VALUES('". $name ."')");
$_id = $this->db_obj->insert_id();
$this->db_obj->execute("UPDATE ". $this->table ." SET pos_id = ". $_id ." WHERE id = ". $_id);
}
...
}
...
$item_group = new item_Group($db_obj, 'item_groups');
Объясните, почему при попытке получения доступа к методу объекта $item_group например $item_group->create("test") выводится ошибка Fatal error: Call to a member function execute() on a non-object.
Только не надо писать перевод ошибки, это я уже нагуглил)