Пример #1
0
 /**
  * __call
  *
  * The heart of the RecordProxy. The method and params go in, the result is then cached and servered next time.
  *
  * @param string $method
  * @param array $params
  * @return mixed
  */
 public function __call($method, $params)
 {
     // Is filterable?
     if (!in_array($method, Memoize::$objectNames[$this->_model])) {
         return parent::__call($method, $params);
     }
     // Variables
     $hash = Memoize::hashArgs($params);
     // Create array if it doesn't exist
     if (!isset($this->_memoizeResults[$method])) {
         $this->_memoizeResults[$method] = array();
     }
     // Check if method + params have been ran already
     if (isset($this->_memoizeResults[$method][$hash])) {
         return $this->_memoizeResults[$method][$hash];
     }
     // Set and return
     return $this->_memoizeResults[$method][$hash] = parent::__call($method, $params);
 }
Пример #2
0
 /**
  * __call
  *
  * The heart of the HelperProxy. The method and params go in, the result is then cached and servered next time.
  *
  * @param string $method
  * @param array $params
  * @return mixed
  */
 public function __call($method, $params)
 {
     // To filter or not to filter. That is the question
     if (!in_array($method, Memoize::$objectNames[$this->_objectName])) {
         return call_user_func_array(array($this->_object, $method), $params);
     }
     // Eval
     $key = Memoize::hashArgs($params);
     // Create array if it doesn't exist
     if (!isset($this->_memoizeResults[$method])) {
         $this->_memoizeResults[$method] = array();
     }
     // Check if method + params have been ran already
     if (isset($this->_memoizeResults[$method][$key])) {
         return $this->_memoizeResults[$method][$key];
     }
     // Get results
     switch (count($params)) {
         case 0:
             $this->_memoizeResults[$method][$key] = $this->_object->{$method}();
             break;
         case 1:
             $this->_memoizeResults[$method][$key] = $this->_object->{$method}($params[0]);
             break;
         case 2:
             $this->_memoizeResults[$method][$key] = $this->_object->{$method}($params[0], $params[1]);
             break;
         case 3:
             $this->_memoizeResults[$method][$key] = $this->_object->{$method}($params[0], $params[1], $params[2]);
             break;
         case 4:
             $this->_memoizeResults[$method][$key] = $this->_object->{$method}($params[0], $params[1], $params[2], $params[3]);
             break;
         case 5:
             $this->_memoizeResults[$method][$key] = $this->_object->{$method}($params[0], $params[1], $params[2], $params[3], $params[4]);
             break;
         default:
             $this->_memoizeResults[$method][$key] = call_user_func_array(array(&$this->_object, $method), $params);
     }
     return $this->_memoizeResults[$method][$key];
 }
Пример #3
0
 public function testDifferentHashArgs()
 {
     $objs = array(new \stdClass(), new \stdClass());
     $first = Memoize::hashArgs(array('String', 35, M_PI, $objs[0]));
     $second = Memoize::hashArgs(array('String', 35, M_PI, $objs[1]));
     $this->assertNotEqual($first, $second);
 }