mirror of
https://github.com/kamilwylegala/cakephp2-php8.git
synced 2024-11-15 03:18:26 +00:00
Implementing __set_state for CakeRoute
It helps the applications to cache the routes using var_export when possible.
This commit is contained in:
parent
7930e680cb
commit
b2a92f9cd8
2 changed files with 29 additions and 0 deletions
|
@ -546,4 +546,22 @@ class CakeRoute {
|
|||
return $out;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set state magic method to support var_export
|
||||
*
|
||||
* This method helps for applications that want to implement
|
||||
* router caching.
|
||||
*
|
||||
* @param array $fields
|
||||
* @return CakeRoute
|
||||
*/
|
||||
public static function __set_state($fields) {
|
||||
$class = function_exists('get_called_class') ? get_called_class() : __CLASS__;
|
||||
$obj = new $class('');
|
||||
foreach ($fields as $field => $value) {
|
||||
$obj->$field = $value;
|
||||
}
|
||||
return $obj;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -977,4 +977,15 @@ class CakeRouteTest extends CakeTestCase {
|
|||
$this->assertEquals($expected, $result);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for var_export on CakeRoute
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testSetState() {
|
||||
$route = new CakeRoute('/', array('controller' => 'pages', 'action' => 'display', 'home'));
|
||||
$retrievedRoute = eval('return ' . var_export($route, true) . ';');
|
||||
$this->assertEquals($route, $retrievedRoute);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue