Использование классов внутри классов.

2People

Новичок
Использование классов внутри классов.

Привет.
У меня есть класс для работы с mysql и класс templates (возможно будут ещё классы, которые надо использовать в других).
В классах где надо использовать эти классы делаю так:
PHP:
class Delete_t {
     var $db;
     var $tpl;
     function Delete_t(){
          $this->db=new sql();
          $this->db->connect();
          $this->tpl=new templates();
     }
     function del_tour ($id){
          $this->db->query("DELETE FROM `table` WHERE `id`=$id");
          .....
     }
}
Это получается, что допустим 5 классов в каждом из которых есть такая конструкция. Получается, что по пять раз выделяется память для sql.class и templates.class
Наверно это не правильно. Лучше использовать global?
 

WP

^_^
Ни в коем случае. там где new Delete_t делаешь $delete_t->db = $sql;
 

2People

Новичок
Автор оригинала: WP
Ни в коем случае. там где new Delete_t делаешь $delete_t->db = $sql;
тогда новый объект не будет создаваться, а будет передаваться просто ссылка?

а если я сделаю так: new Delete_t($sql, $tpl); и наверно перед $sql и $tpl поставлю по &
 

Alexander K.

Новичок
PHP:
$db=new sql(); 
$db->connect(); 
$tpl=new templates();

$del = new Delete_t();
$del->db =& $db;
$del->tpl =& $tpl;
либо

PHP:
$db=new sql(); 
$db->connect(); 
$tpl=new templates();

$del = new Delete_t($db, $tpl);
а конструктор Delete_t будет выглядеть так

PHP:
     function Delete_t(&$db, &$tpl){ 
          $this->db =& $db;
          $this->tpl =& $tpl; 
     }
в php5 амперсанды не обязательны
 

2People

Новичок
WP - Спасибо за короткий и ясный ответ.
Alexander K. - Спасибо За пример и за то, что он с & там где надо.
SIMM - ссылка помогла, только пхпинсайд не работает.
 
Сверху