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

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 );
тогда все заработает, но мне по некоторым соображениям не хотелось бы это делать

какие идеи??
 
что "как надо выводит"? что работает? что не работает? какой баг? где?
ничего не понятно.
поток сознания какой-то.
 
не отрабатывает метод
$this->m_template->setVar('EEE', 'EEE' );

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

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

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

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