ソースを参照

Make sure $object implements EventListenerInterface.

Robert 11 年 前
コミット
62e1e2a2d7
1 ファイル変更3 行追加2 行削除
  1. 3 2
      src/Core/ObjectRegistry.php

+ 3 - 2
src/Core/ObjectRegistry.php

@@ -14,6 +14,7 @@
  */
 namespace Cake\Core;
 
+use Cake\Event\EventListenerInterface;
 use RuntimeException;
 
 /**
@@ -277,7 +278,7 @@ abstract class ObjectRegistry
     {
         list(, $name) = pluginSplit($objectName);
         $this->unload($objectName);
-        if (isset($this->_eventManager)) {
+        if (isset($this->_eventManager) && $object instanceof EventListenerInterface) {
             $this->eventManager()->attach($object);
         }
         $this->_loaded[$name] = $object;
@@ -297,7 +298,7 @@ abstract class ObjectRegistry
             return;
         }
         $object = $this->_loaded[$objectName];
-        if (isset($this->_eventManager)) {
+        if (isset($this->_eventManager) && $object instanceof EventListenerInterface) {
             $this->eventManager()->off($object);
         }
         unset($this->_loaded[$objectName]);