Передать значение переменной в одной функции другой функции в том же классе - PullRequest
0 голосов
/ 09 июня 2011

У меня есть класс Block_Model (на самом деле модель в рамках Kohana) с 2 методами input() и output().

class Block_Model extends ORM {
    function input($arg) {
        //...
    }
    function output() {
        //...
    }
    //...
}

Метод input вызывается из функции, написанной внутри контроллера с именем Home_Controller, и передает аргумент методу input.

class Home_Controller extends Controller {
    function doSomething() {
        $block = new Block_Model();
        //...
        $block->input($val);
        //...
    }
}

Как сделать так, чтобы аргумент, переданный input(), был доступен в методе output()?

Ответы [ 2 ]

0 голосов
/ 09 июня 2011

Это похоже на ответ @ silent, но вы можете объединить setter & getter одним способом.

protected $_foo;

public function foo($val = NULL)
{
    if ($val === NULL)
    {
        // its a getter!
        return $this->_foo;
    }

    // its a setter 
    $this->_foo = $val;
    // return current object, so it becomes a chainable method
    return $this;
}

Теперь вы можете использовать $value = $object->foo(); и $object->foo($value)->do_something_else();

0 голосов
/ 09 июня 2011

Вам понадобится частная собственность:

class Something{
   private $_variable = "";

   function input( $data ){
      $this->_variable = $data;
      //do the rest of function
   }

   function output(  ){
      //get previously set data
      echo $this->_variable;
   }

}
...