public function setEventManager(EventManager $em) { $this->em = $em; $this->em->addSubscriber($this); return $this; }
/** * Instancia a classe DAO * @param string $daoName Nome da classe DAO * @param DataBase $db Database que deverá ser utilizada na criação do DAO * @return \DAO */ public static function DAO($daoName, $db = null) { $className = ucfirst($daoName); if (!endsWith($daoName, 'DAO')) { $className .= 'DAO'; } if (is_null($db)) { $daokey = $className; } else { $daokey = $className . $db->toString(); } if (!isset(self::$daos[$daokey])) { self::$daos[$daokey] = null; // @codeCoverageIgnoreStart if (file_exists(PATH_APP . '/Model/Dao/' . $className . '.php')) { require_once PATH_APP . '/Model/Dao/' . $className . '.php'; } else { if (file_exists(PATH_DEFAULT . '/Model/Dao/' . $className . '.php')) { require_once PATH_DEFAULT . '/Model/Dao/' . $className . '.php'; } else { self::log()->info('A classe DAO " ' . $daoName . '" não existe'); return null; } } $factory = new ReflectionClass("Application\\Model\\Dao\\" . $className); if ($factory->isSubclassOf('MyFrameWork\\DataBase\\DAO') and $factory->implementsInterface("MyFrameWork\\Event\\PublisherInterface")) { $instance = $factory->newInstance($db); $method = $factory->getMethod("setEventManager"); $method->invoke($instance, EventManager::getInstance()); return $instance; } else { if ($factory->isSubclassOf('MyFrameWork\\DataBase\\DAO') && !$factory->isAbstract()) { self::$daos[$daokey] = $factory->newInstance($db); } else { // @codeCoverageIgnoreStart //Só entra neste else caso exista alguma classe que nãos seja DAO na pasta dos DAOS self::log()->info('A classe DAO " ' . $daoName . '" não é válida'); return null; // @codeCoverageIgnoreEnd } } } return self::$daos[$daokey]; }