08.20 php saved
biesbjerg
Tags add more
 
Note
Alternative requestAction call
  1. Regular requestAction call using string url:
  2.  
  3. for ($i = 0; $i < 1000; $i++) {
  4.     $this->requestAction('/galleries/galleries/display/hello/world');
  5. }
  6.  
  7. Execution Time: 22.597 seconds
  8.  
  9. -------------------------------------------------------------------------------------------------------------------------------------------------
  10.  
  11. Regular requestAction call using array url:
  12.  
  13. for ($i = 0; $i < 1000; $i++) {
  14.     $this->requestAction(array('plugin' => 'galleries', 'controller' => 'galleries', 'action' => 'display', 'pass' => array('hello', 'world')));
  15. }
  16.  
  17. Execution Time: 19.742 seconds
  18.  
  19. -------------------------------------------------------------------------------------------------------------------------------------------------
  20.  
  21. Alternative requestAction call using string url:
  22.  
  23. for ($i = 0; $i < 1000; $i++) {
  24.     $this->rA('/galleries/galleries/display/hello/world');
  25. }
  26.  
  27. Execution Time: 2.346 seconds
  28.  
  29. -------------------------------------------------------------------------------------------------------------------------------------------------
  30.  
  31. Alternative requestAction call using array url:
  32.  
  33. for ($i = 0; $i < 1000; $i++) {
  34.     $this->rA(array('plugin' => 'galleries', 'controller' => 'galleries', 'action' => 'display', 'pass' => array('hello', 'world')));
  35. }
  36.  
  37. Execution Time: 1.792 seconds
  38.  
  39.  
  40. -------------------------------------------------------------------------------------------------------------------------------------------------
  41.  
  42. Alternative requestAction by biesbjerg:
  43.  
  44. function rA($url) {
  45.     if (is_string($url)) {
  46.         $url = Router::parse($url);
  47.     }
  48.     $defaults = array(
  49.         'plugin' => null,
  50.         'controller' => null,
  51.         'action' => 'index',
  52.         'pass' => array()
  53.     );
  54.  
  55.     extract(array_merge($defaults, $url));
  56.  
  57.     $import = $controller;
  58.     if (!empty($plugin)) {
  59.         $import = $plugin . '.' . $controller;
  60.     }
  61.     if (!App::import('Controller', $import)) {
  62.         return false;
  63.     }
  64.     $className = Inflector::camelize($controller . 'Controller');
  65.     $Ctrl =& new $className();
  66.     $Ctrl->plugin = $plugin;
  67.     $Ctrl->params['requested'] = true;
  68.     $Ctrl->constructClasses();
  69.  
  70.     switch (count($pass)) {
  71.         case 0:
  72.             return $Ctrl->{$action}();
  73.         case 1:
  74.             return $Ctrl->{$action}($pass[0]);
  75.         case 2:
  76.             return $Ctrl->{$action}($pass[0], $pass[1]);
  77.         case 3:
  78.             return $Ctrl->{$action}($pass[0], $pass[1], $pass[2]);
  79.         case 4:
  80.             return $Ctrl->{$action}($pass[0], $pass[1], $pass[2], $pass[3]);
  81.         case 5:
  82.             return $Ctrl->{$action}($pass[0], $pass[1], $pass[2], $pass[3], $pass[4]);
  83.         default:
  84.             return call_user_func_array(array(&$Ctrl, $action), $pass);
  85.         break;
  86.     }
  87. }
Parsed in 0.139 seconds, using GeSHi 1.0.7.14

Modify this Paste