Передача объекта в конструктор класса

esomkin

Новичок
Передача объекта в конструктор класса

Добрый вечер.

Есть класс для работы с 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);
	}

}
и есть другой класс, одним из свойств которого является объект класса DB_Mysql - db_obj

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);
	}
        ...
}
$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.

Только не надо писать перевод ошибки, это я уже нагуглил)
 

Вурдалак

Продвинутый новичок
PHP:
public function __constructor($db_obj, $table) {
-~{}~ 09.03.10 23:37:

PHP:
$name = htmlspecialchars($name, ENT_QUOTES);

$this->db_obj->execute("INSERT INTO ". $this->table ."(name) VALUES('". $name ."')");
— это говно
 

esomkin

Новичок
Автор оригинала: Вурдалак
PHP:
public function __constructor($db_obj, $table) {
-~{}~ 09.03.10 23:37:

PHP:
$name = htmlspecialchars($name, ENT_QUOTES);

$this->db_obj->execute("INSERT INTO ". $this->table ."(name) VALUES('". $name ."')");
— это говно
Насчет __constructor понял, а почему так категорично второе?
 
Сверху