/** * Throw not found class exception * @return void */ private function throwClassNotFoundException($dirname) { $subdirectory = str_replace($this->getPathBase() . DIRECTORY_SEPARATOR . 'web', '', $dirname); $subdirectory = empty($subdirectory) ? 'Index' : $subdirectory; $subdirectories = explode(DIRECTORY_SEPARATOR, $subdirectory); $suffix = join("", array_map("ucwords", $subdirectories)); $modulesPath = PlainConfig::getInstance()->getModulesDirectories(); foreach ($modulesPath as $modulePath) { $moduleFiles = scandir($modulePath . DIRECTORY_SEPARATOR . 'Controllers'); if (!in_array("Default{$suffix}Controller.php", $moduleFiles)) { continue; } $defaultCall = "Application\\Modulo\\Controllers\\Default{$suffix}Controller"; $reflectionModule = new \ReflectionClass($defaultCall); if ($reflectionModule->hasMethod('indexAction')) { $defaultClass = new $defaultCall(); return $defaultClass->{'indexAction'}($this, PlainHttpResponse::getInstance()); } } $actionName = PlainHttpRequest::getInstance()->getAction() ? PlainHttpRequest::getInstance()->getAction()->__toString() : 'notFound'; $class = new PlainNotFoundActionController(); $class->{$actionName . 'Action'}($this, PlainHttpResponse::getInstance()); return; }
<?php namespace Web\admin; require_once "../../Library/PlainMVC/Core/Autoload.php"; use Library\PlainMVC\Core\View\PlainHttpRequest; /** * Front Controller application * @author Hélio Costa e Silva <*****@*****.**> * @package \web * @version January, 17 2010 */ PlainHttpRequest::getInstance()->dispatch(dirname(__FILE__));
} $config = new Configuration(); $config->setMetadataCacheImpl($cache); ## Doctrine Metadata configuration // Annotation $driverImpl = $config->newDefaultAnnotationDriver(Core\PlainConfig::getInstance()->getApplicationDirectory()); // Yaml files //$driver = new YamlDriver(array(dirname(__FILE__) . '/../schema/')); //$config->setMetadataDriverImpl($driver); // XML files //$driver = new \Doctrine\ORM\Mapping\Driver\XmlDriver(array('/path/to/xmlfiles')); //$config->setMetadataDriverImpl($driver); $config->setMetadataDriverImpl($driverImpl); $config->setQueryCacheImpl($cache); $config->setProxyDir(Core\PlainConfig::getInstance()->getApplicationDirectory()); $config->setProxyNamespace(View\PlainHttpRequest::getInstance()->getNamespaceFor(Core\PlainConfig::getInstance()->getApplicationDirectory())); if ($settings['type'] != "production") { $config->setAutoGenerateProxyClasses(true); } else { $config->setAutoGenerateProxyClasses(false); } $connectionOptions = array('driver' => $settings['database']['driver'], 'host' => $settings['database']['host'], 'dbname' => $settings['database']['dbname'], 'user' => $settings['database']['user'], 'password' => $settings['database']['pass']); class DoctrineConfig { private static $em; public function __construct($connectionOptions, $config) { if (!self::$em instanceof \Doctrine\ORM\EntityManager) { self::$em = \Doctrine\ORM\EntityManager::create($connectionOptions, $config); } }