баг при передачи ссылки на класс

Alexandre

PHPПенсионер
баг при передачи ссылки на класс

есть класс
PHP:
class CTerm
{
  var $m_template = null;
  var $m_db = null;

  function CTerm( &$db , &$template )
  {
      $this->m_template = $template;
      $this->m_db = $db;
  }

  function setTest(  )
  {

    $t = $this->m_template;
 //  print_r( $t);
     $t->setVar('EEE',  'EEE' );
  }
}
вызывающий код:
PHP:
    $mysql = &new CMysql(  $g_strDbUser, $g_strDbPassword, $g_strDbName );
    $template = &new vlibTemplate();
    $template->newTemplate('./template/termEditor.html');

    $term = new CTerm( $mysql , $template);
    $term->setTest(  );
//    $template ->setVar('EEE',  'EEE' );
1) раскоменчиваем строку // $template ->setVar('EEE', 'EEE' )
все как надо выводит, те проблема не в шаблоне
2) сам класс шаблона передается в переменную проверка
// print_r( $t);
но метод $t->setVar('EEE', 'EEE' ); не работает, так же как и
$this->m_template->setVar('EEE', 'EEE' ); - что было первоночально.

с объектом $db все работает :confused: :confused:

можно класс шаблон передать в качестве параметра
$term->setTest( $template );
тогда все заработает, но мне по некоторым соображениям не хотелось бы это делать

какие идеи??
 

tony2001

TeaM PHPClub
что "как надо выводит"? что работает? что не работает? какой баг? где?
ничего не понятно.
поток сознания какой-то.
 

Alexandre

PHPПенсионер
не отрабатывает метод
$this->m_template->setVar('EEE', 'EEE' );

переменной &$template, которая передана по ссылке в конструкторе класса CTerm( &$db , &$template )
 

Кром

Новичок
>$this->m_template = $template;

Передай ее здесь по ссылке:
$this->m_template = &$template;
 

Alexandre

PHPПенсионер
$this->m_template = &$template
заработала :)
Это вам не С-шные указатели
а я думал, ссылка автоматически перадресуется :confused:

остается одна непонятка:
почему для класса БД такое проходит а для темплейта нет??
PHP:
     function CTerm( &$db , &$template ) 
  { 
      $this->m_template = &$template; 
      $this->m_db = $db; 
  }
всем спасибо
 

Profic

just Profic (PHP5 BetaTeam)
почему для класса БД такое проходит а для темплейта нет
Потому что объект БД использует ресурс, который будучи скопированным все равно ссылается на одно и то же. Что и было сделано для объектов в php5.
Крайне настоятельно рекоммендую прочесть [m]language.references[/m]
 
Сверху