public function setEventManager(EventManager $em)
 {
     $this->em = $em;
     $this->em->addSubscriber($this);
     return $this;
 }
Exemplo n.º 2
0
 /**
  * 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];
 }