Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- namespace Application ;
- use Exception ;
- use ErrorException ;
- use Application\Core\Object ;
- use Application\Core\ApplicationConfig ;
- use Application\Library\Registry\Registry ;
- use Application\Library\RequestParser\RequestParser ;
- use Application\Library\Session\SessionHandler ;
- use Application\Library\Cookie\CookieHandler ;
- use Application\MVC\Models\Database\MySQL\MySQLConnection ;
- use Application\MVC\Controllers\ControllerManager ;
- use Application\MVC\Views\ErrorView ;
- use Application\MVC\Controllers\HomeController ;
- use Application\MVC\Controllers\LoginController ;
- use Application\MVC\Controllers\CategoryController ;
- use Application\MVC\Controllers\ProductController ;
- use Application\MVC\Controllers\ProviderController ;
- use Application\MVC\Controllers\InstallerController ;
- use Application\MVC\Controllers\UnloggedController ;
- use Application\MVC\Controllers\CategoryTaxController ;
- class CotaPreco extends Object {
- public static $instance = null ;
- /**
- * Gerenciador de controladores da aplicação
- * @var ControllerManager
- */
- private $controllerManager = null ;
- /**
- * Constroí a aplicação adicionando os handlers
- */
- public function __construct () {
- $this->controllerManager = ControllerManager::getInstance ( ) ;
- $this->controllerManager->addController ( new InstallerController ( ) ) ;
- $this->controllerManager->addController ( new UnloggedController ( ) ) ;
- $this->controllerManager->addController ( new HomeController ( ) ) ;
- $this->controllerManager->addController ( new LoginController ( ) ) ;
- $this->controllerManager->addController ( new ProviderController ( ) ) ;
- }
- /**
- * Delega a manipulação das requisições feitas à
- * aplicação ao controlador responsável.
- */
- public function handle ( ) {
- try {
- Registry::getInstance()->set ( 'ApplicationConfig' , new ApplicationConfig ( ) ) ;
- Registry::getInstance()->set ( 'Session' , SessionHandler::getInstance ( ApplicationDIR ) ) ;
- Registry::getInstance()->set ( 'isInstalled' , $this->isInstalled ( ) ) ;
- Registry::getInstance()->set ( 'RequestParser' , new RequestParser ( ) );
- Registry::getInstance()->set ( 'Cookie' , CookieHandler::getInstance ( ) ) ;
- if ( $this->isInstalled ( ) ) {
- Registry::getInstance()->set ( 'MySQL' , new MySQLConnection ( ) ) ;
- $session = Registry::getInstance ( )->get ( 'Session' ) ;
- if ( $session->get ( 'isLogged' ) === TRUE ) {
- $this->controllerManager->addController ( new CategoryController ( ) ) ;
- $this->controllerManager->addController ( new ProductController ( ) ) ;
- $this->controllerManager->addController ( new CategoryTaxController ( ) ) ;
- }
- }
- $this->controllerManager->handle ( ) ;
- } catch ( Exception $e ) {
- $view = new ErrorView ( ) ;
- $view->setErrorMessage ( $e->getMessage ( ) ) ;
- $view->display ( ) ;
- }
- }
- /**
- * Verifica se a aplicação está instalada
- * @return boolean
- */
- public function isInstalled () {
- $config = Registry::getInstance ()->get ( 'ApplicationConfig' ) ;
- return filter_var ( $config->getConfig ( 'misc' , 'installed' ) , FILTER_VALIDATE_BOOLEAN ) ;
- }
- /**
- * Recupera a instância da aplicação.
- * @return Application
- */
- public static function getInstance () {
- if ( self::$instance == null ) {
- self::$instance = new CotaPreco() ;
- }
- return self::$instance ;
- }
- /**
- * Inicializa a aplicação.
- * @see Application::handle()
- */
- public static function initialize () {
- self::getInstance ()->handle () ;
- }
- }
Add Comment
Please, Sign In to add comment