/** * @todo inserisce nel Config i settaggi della classe */ private function set(){ // recupero le impostazioni $impostazioni = Nore_Config::run()->get(); // recupero la cartella di installazione $cartella_installazione = $impostazioni['Nore_Core']['cartella_installazione']; // recupero la request uri senza la cartella d'installazione e query string $query_uri = str_replace($cartella_installazione, '', $_SERVER['REQUEST_URI']); $richiesta = str_replace('?'.$_SERVER['QUERY_STRING'], '', $query_uri); // recupero il redirect $redirect = str_replace($cartella_installazione, '', isset($_SERVER['REDIRECT_URL'])?$_SERVER['REDIRECT_URL']:''); Nore_Config::run()->set( array( 'metodo' => $_SERVER['REQUEST_METHOD'], 'get' => $_GET, 'post' => $_POST, 'stato_richiesta' => $_SERVER['REDIRECT_STATUS'], 'richiesta' => $richiesta, 'parametri_get' => $_SERVER['QUERY_STRING'], 'redirect_url' => $redirect, 'parametri_redirect' => isset($_SERVER['REDIRECT_QUERY_STRING'])?$_SERVER['REDIRECT_QUERY_STRING']:false, ) ); }
public function __construct($parametri) { var_dump( 'App di Test Avviata', $parametri, Nore_Routing::run()->costruisci_url_assoluto('/Test/controller/action/a/b/c/d=1/e=2/'), Nore_Config::run()->get() ); }
/** * @todo Avvia l'applicazione richiesta */ private function avvia_app(){ // recupero le impostazioni $impostazioni = Nore_Config::run()->get(); // tramuto in array l'url interno $parametri = explode( '/' , $impostazioni['Nore_Routing']['url_interno']); // istanzio un oggetto yaml parser $yaml = new Parser(); // il percorso del file app_pubbliche.yml $file = $impostazioni['Nore_Core']['path_app'] . DIRECTORY_SEPARATOR . 'Nore' . DIRECTORY_SEPARATOR . 'app_pubbliche.yml'; // leggo il file app_pubbliche.yml $app_pubbliche = $yaml->parse(file_get_contents($file)); // controllo se l'app da avviare tramite url è nelle app_pubbliche if (in_array( $parametri[1], $app_pubbliche ) ){ // costruisco il nome dell'applicazione da caricare, nel seguente formato // \namespace\App $app = "\\".$parametri[1].'_App'; // controllo se esiste l'App richiesta if ( class_exists($app) ) // istanzio l'applicazione e gli passo il controllo $app = new $app($parametri); // altrimenti gestisco l'errore else throw new Nore_Eccezione('Errore non riesco a trovare: '.$app); } // altrimenti gestico l'errore, meglio non segnalare che non esiste l'app else throw new Nore_Eccezione('Errore non riesco a trovare: '.$parametri[1]); }
/** * @todo inserisce nel Config i settaggi della classe */ private function set(){ // recupero il nome della pagina php usata come front controller $front_controller = explode('/' , $_SERVER['SCRIPT_NAME']); // prendo l'ultimo elemento di $_SERVER['SCRIPT_NAME'] $front_controller = end( $front_controller ); // recupero la cartella dove è installato il framework a partire dalla web root // tolgo il /front controller da $_SERVER['SCRIPT_NAME'] $cartella_installazione = str_replace( '/'.$front_controller, '', $_SERVER['SCRIPT_NAME']); Nore_Config::run()->set( array( 'web_server' => $this->web_server(), 'path_base' => $_SERVER['DOCUMENT_ROOT'].$cartella_installazione, 'path_app' => $_SERVER['DOCUMENT_ROOT'].$cartella_installazione.DIRECTORY_SEPARATOR.'Application', 'path_public' => $_SERVER['DOCUMENT_ROOT'].$cartella_installazione.DIRECTORY_SEPARATOR.'Public', 'path_temp' => $_SERVER['DOCUMENT_ROOT'].$cartella_installazione.DIRECTORY_SEPARATOR.'Tmp', 'cartella_installazione' => $cartella_installazione, 'front_controller' => '/'.$front_controller, ) ); }
/** * @todo Questo metodo genera un url assoluto, utile per collegare più pagine * tra di loro. N.B. da utilizzare solo per collegare pagine e non file * statici, per quest'ultimo caso esiste un apposito metodo. * * @param string $query_string * @return string */ public function costruisci_url_assoluto($query_string) { // recupero le impostazioni $impostazioni = Nore_Config::run()->get(); // aggiungo eventualmente la lingua $query_string = $this->lingua($query_string,true); // costruisco l'url assoluto, ['base_url'] arriva già impostato in base al rewriting $url = $impostazioni['Nore_Routing']['base_url'] . $query_string; return $url; }
/** * @todo Il distruttore della classe, ricopio nella sessione */ function __destruct() { $_SESSION = Nore_Config::run()->mie(); }
/** * Imposta il formato del response in caso si decide non usare il * riconoscimento automatico * * @param string $formato * @param string $default_namespace */ public function set_formato($formato,$default_namespace=false) { // recupero le impostazioni $impostazioni = Nore_Config::run()->mie(); // controllo se viene passato il namespace per caricare un Render di terze parti if ($default_namespace) $formato = $default_namespace.$formato; // altrimenti carico quello di default else $formato = $impostazioni['Response']['default_namespace'].$formato; // controllo che il formato sia tra quelli abilitati if (in_array($formato, $impostazioni['Response']['tipi_abilitati']) ) Nore_Config::run()->set( array('formato' => $formato )); else throw new Nore_Eccezione('Il formato scelto ('.$formato.') non e\' gestito'); }