Вложенные классы. Как достучаться к ним из-вне?

wmaster

Guest
Вложенные классы. Как достучаться к ним из-вне?

PHP4.3
Есть

PHP:
class Core{
var $smarty;
   function ConfSm(){
      //somecode
      include('Smarty.class.php');
      $smarty = new Smarty;
  }
}
Можно ли как-то извне достучасться до методов этого smarty?
Дело в то, то очень хотелось бы иметь доступ к этому вложенному классу и из этого класса, и извне его. Это важно.

Делал так:
PHP:
$this->smarty = $smarty;
return $this->smarty;
Но это я так понял возвращается копия, а не указатель?
Если кто решал подобные проблемы подскажите где грабли.
 

wmaster

Guest
Это я Код равнял :).
Tab Tab Space - вот и отправил раньше времени.

Не привыкший в браузере код писать.
 

tony2001

TeaM PHPClub
1) это не класс, это объект.
2) до тех пор, пока этот объект не будет возвращаться из метода и/или не будет атрибутом класса Core, он будет просто _локальной переменной_ в методе, которая, естественно, недоступна извне.
т.е.
PHP:
class Core{ 
var $smarty; 
   function ConfSm(){ 
      //somecode 
      $this->smarty = new Smarty; 
  } 
}
тебя спасет.
 

wmaster

Guest
Вот Спасибочки огромное.
Действительно
PHP:
$this->smarty = new Smarty;
помогло, однако возвращенный объект
PHP:
return $this->smarty;
дает не те результаты.

Так например
PHP:
$core = new Core;
$core->smarty->assign('test2', "Тестовый Текст");
$core->smarty->display('index.tpl');
отображает Тестовый Текст
PHP:
$core = new Core;
$smarty = $core->ConfigureSmarty(); // return $this->smarty;
$smarty->assign('test2', "Тестовый Текст");
$core->smarty->display('index.tpl');
Не отображает. Т.е. получается это копия объекта. И обладают они независимыми свойствами.

Это уже не вопрос. Просто интересно, есть ли еще варианты кроме $core->smarty->someMethod();
 

Demiurg

Guest
core::ConfigureSmarty()
должен возвращать ссылку.
Но сама идея возврящать ссылку на член класса требует серьезной мативации.
 

wmaster

Guest
Действительно возвращать ссылку в данном случае не стоит.

Спасибо большое за ответы, Вы мне очень помогли.
Все вопросы сняты.
 
Сверху