Изменение класса

fantik

Новичок
Изменение класса

Есть файл vars.php :

PHP:
class vars{
  private $item;
  function __get($varname){
    return isset($this->$varname) ? $this->$varname : "" ;
  }
  public function setvar ($varname, $value){
    $this -> $varname = $value ;
  }
}
и несколько шаблонов, в которых доступен класс vars и нужно в него добавить какие-то переменные.


Вопросов несколько.

1.
Есть такой код :
PHP:
  $vars = new vars ;
  $vars -> setvar ("name", "John Dous");
Возможно ли сделать так, чтобы при вызове строки
PHP:
$vars = new vars ;
в классе vars уже была переменная name? То есть изменить сам класс vars? Или же делать в самом начале
PHP:
$GLOBALS["vars"] = new vars;
и уже туда добавлять переменные из модулей?

2. Как в функции setvar сделать так, чтобы в класс добавлялась переменная private и при вызове $vars -> name например вызывался обработчик __get, а не сама переменная?
 

whirlwind

TDD infected, paranoid
PHP:
class Persistent {
    private $_atoms= array();

    function set($attr,$value){
        if ( !$this->isNew() && !$this->isSelected() )
            throw new Exception(sprintf("Object [%s] unselected",get_class($this)));
        return $this->atom($attr)->setValue($value);
    }

    function get($attr){
        if ( $this->atom($attr)->getAtomTypeID() != WCMF_TYPE_OBJECT
            && !$this->isNew() && !$this->isSelected() )
        {
            throw new Exception(sprintf("Object [%s] unselected",get_class($this)));
        }
        return $this->atom($attr)->getValue();
    }

    function atom($attr){
        $attr = strtolower($attr);
        if ( !is_array($this->_atoms) )
            throw new Exception(sprintf("Corrupted [%s]",get_class($this)));

        if ( !array_key_exists($attr,$this->_atoms) )
            throw new Exception(sprintf("Attribute not exists [%s]%s",get_class($this),$attr));
        return $this->_atoms[$attr]->getRef();
    }

    function __set($n,$v){
        return $this->set($n,$v);
    }

    function __get($n){
        return $this->get($n);
    }

    function addAtom($attr,...);

}
 
Сверху