Обращение к существующему экз. класса из другого класса.

Astral Man

We Will Rock You
Обращение к существующему экз. класса из другого класса.

Нужно из собственного класса обратится к уже существующему экземпляру класса Smarty что бы установить переменную для шаблона.
Как это сделать?
PHP 5
 

Oddinn

Новичок
Re: Обращение к существующему экз. класса из другого класса.

Автор оригинала: Astral Man
Нужно из собственного класса обратится к уже существующему экземпляру класса Smarty что бы установить переменную для шаблона.
Как это сделать?
PHP 5
Экземпляр класса - это просто переменная, значит можно либо передать ее как-то твоему классу (например, в качестве параметра конструктора или одного из методов) или через global, если имя экземпляра класса Smarty фиксированно, но это ИМХО не правильный подход.
 

Astral Man

We Will Rock You
Автор оригинала: Vital_N
а в чем соббсно проблема?
Не могу обратится к классу Smarty из своего класса.
PHP:
class MyClass {
    function setVar($set) {
        $set = 'blah-blah'
        $smarty->assign('var', $set);
    }
}

$MyClass = new MyClass;

$MyClass->setVar($set);
{* Smarty *}
{$var}
 

Oddinn

Новичок
Я бы сделал так:
PHP:
class MyClass {
    var $smarty;
    function MyClass($s){
        $this->smarty = $s;
    }
    function setVar($set) {
        $set = 'blah-blah'
        $this->smarty->assign('var', $set);
    }
}
$MyClass = new MyClass($smarty);

$MyClass->setVar($set);
 

Мутник

Новичок
PHP:
class MyClass { 
    function setVar($set) {
        global $smarty;
        $set = 'blah-blah' 
        $smarty->assign('var', $set); 
    } 
} 

$MyClass = new MyClass; 

$MyClass->setVar($set);
Ты не сделал доступным $smarty для твоей функции.
 

crocodile2u

http://vbolshov.org.ru
ИМХО, нужно все-таки избегать глобальных переменных там, где это возможно.
 

Astral Man

We Will Rock You
crocodile2u
Я знаю что использование глобальных переменных - плохой тон.
 

Мутник

Новичок
Astral Man

а вообще, так как тут в примере написано - это ужасть... так НЕ надо делать! ;(
 

Astral Man

We Will Rock You
Мутник
А как тогда нужно, дайте дельный совет. С ООП только начинаю работать, по этому возникают такие глупые вопросы :)
 

vafel

Новичок
пример с использованием ссылки на обьект смарти нормальный.
токо ссылки не хватает)
 
Сверху