diff --git a/lib/Cake/Controller/Controller.php b/lib/Cake/Controller/Controller.php index 9100dc5441f..38f26ba554d 100644 --- a/lib/Cake/Controller/Controller.php +++ b/lib/Cake/Controller/Controller.php @@ -634,7 +634,7 @@ public function constructClasses() { $this->_mergeControllerVars(); if ($this->uses) { $this->uses = (array)$this->uses; - list(, $this->modelClass) = pluginSplit(current($this->uses)); + list(, $this->modelClass) = pluginSplit(reset($this->uses)); } $this->Components->init($this); return true; diff --git a/lib/Cake/Test/Case/Controller/ControllerMergeVarsTest.php b/lib/Cake/Test/Case/Controller/ControllerMergeVarsTest.php index ad59802ab5f..c6207e19c9a 100644 --- a/lib/Cake/Test/Case/Controller/ControllerMergeVarsTest.php +++ b/lib/Cake/Test/Case/Controller/ControllerMergeVarsTest.php @@ -250,4 +250,17 @@ public function testMergeVarsNotGreedy() { $this->assertFalse(isset($Controller->Session)); } + +/** + * Ensure that $modelClass is correct even when Controller::$uses + * has been iterated, eg: by a Component, or event handlers. + */ + public function testMergeVarsModelClass() { + $Controller = new MergeVariablescontroller(); + $Controller->uses = array('Test', 'TestAlias'); + $lastModel = end($Controller->uses); + $Controller->constructClasses(); + $this->assertEquals($Controller->uses[0], $Controller->modelClass); + } + }