From ed8ccc2903cd2a13a59665726e597d12e3dafb42 Mon Sep 17 00:00:00 2001 From: Mark Story Date: Sun, 19 Jun 2011 22:08:03 -0700 Subject: [PATCH] Remove persistModel. The benefits of persistModel are no longer needed. Because of lazy model associations, the performance benefits persistModel are no longer realized. Fixes #1782 --- lib/Cake/Controller/Controller.php | 45 +++---------------- .../Test/Case/Controller/ControllerTest.php | 23 ---------- 2 files changed, 7 insertions(+), 61 deletions(-) diff --git a/lib/Cake/Controller/Controller.php b/lib/Cake/Controller/Controller.php index 255319d72..907e5576a 100644 --- a/lib/Cake/Controller/Controller.php +++ b/lib/Cake/Controller/Controller.php @@ -236,15 +236,6 @@ class Controller extends Object { */ public $cacheAction = false; -/** - * Used to create cached instances of models a controller uses. - * When set to true, all models related to the controller will be cached. - * This can increase performance in many cases. - * - * @var boolean - */ - public $persistModel = false; - /** * Holds all params passed and named. * @@ -593,8 +584,6 @@ class Controller extends Object { /** * Loads and instantiates models required by this controller. - * If Controller::$persistModel; is true, controller will cache model instances on first request, - * additional request will used cached models. * If the model is non existent, it will throw a missing database table error, as Cake generates * dynamic models for the time being. * @@ -607,36 +596,16 @@ class Controller extends Object { if ($modelClass === null) { $modelClass = $this->modelClass; } - $cached = false; - $object = null; list($plugin, $modelClass) = pluginSplit($modelClass, true); - if ($this->persistModel === true) { - $cached = $this->_persist($modelClass, null, $object); + $this->modelNames[] = $modelClass; + + $this->{$modelClass} = ClassRegistry::init(array( + 'class' => $plugin . $modelClass, 'alias' => $modelClass, 'id' => $id + )); + if (!$this->{$modelClass}) { + throw new MissingModelException($modelClass); } - - if (($cached === false)) { - $this->modelNames[] = $modelClass; - - $this->{$modelClass} = ClassRegistry::init(array( - 'class' => $plugin . $modelClass, 'alias' => $modelClass, 'id' => $id - )); - - if (!$this->{$modelClass}) { - throw new MissingModelException($modelClass); - } - - if ($this->persistModel === true) { - $this->_persist($modelClass, true, $this->{$modelClass}); - $registry = ClassRegistry::getInstance(); - $this->_persist($modelClass . 'registry', true, $registry->__objects, 'registry'); - } - } else { - $this->_persist($modelClass . 'registry', true, $object, 'registry'); - $this->_persist($modelClass, true, $object); - $this->modelNames[] = $modelClass; - } - return true; } diff --git a/lib/Cake/Test/Case/Controller/ControllerTest.php b/lib/Cake/Test/Case/Controller/ControllerTest.php index 045890531..7cf05031f 100644 --- a/lib/Cake/Test/Case/Controller/ControllerTest.php +++ b/lib/Cake/Test/Case/Controller/ControllerTest.php @@ -513,29 +513,6 @@ class ControllerTest extends CakeTestCase { unset($Controller); } -/** - * testPersistent method - * - * @access public - * @return void - */ - public function testPersistent() { - $this->markTestIncomplete('persistModel is totally broken right now.'); - - Configure::write('Cache.disable', false); - $Controller = new Controller(); - $Controller->modelClass = 'ControllerPost'; - $Controller->persistModel = true; - $Controller->constructClasses(); - $this->assertTrue(file_exists(CACHE . 'persistent' . DS .'controllerpost.php')); - $this->assertTrue(is_a($Controller->ControllerPost, 'ControllerPost')); - @unlink(CACHE . 'persistent' . DS . 'controllerpost.php'); - @unlink(CACHE . 'persistent' . DS . 'controllerpostregistry.php'); - - unset($Controller); - Configure::write('Cache.disable', true); - } - /** * testFlash method *