1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
| if( ! class_exists( 'Default_Bootstrap' ) )
{
if( ! defined( 'APPLICATION_CONTROLLERS_DIRECTORY' ) )
define( 'APPLICATION_CONTROLLERS_DIRECTORY', 'Controller' );
if( ! defined( 'APPLICATION_DEFAULT_CONTROLLER' ) )
define( 'APPLICATION_DEFAULT_CONTROLLER', 'Default' );
final class Default_Bootstrap
extends Strategy_Singleton_Abstract
implements Factory_Interface
{
protected function __construct()
{
$i_Segment = 1;
$s_Path = APPLICATION_CONTROLLERS_DIRECTORY;
$o_Uri = Default_Uri::GetInstance();
while( $s_Segment = $o_Uri->GetSegment( $i_Segment ) )
{
$s_Segment = strtoupper( substr( $s_Segment, 0, 1 ) )
. strtolower( substr( $s_Segment, 1, strlen( $s_Segment ) ) );
$s_Path .= "/$s_Segment";
$i_Segment++;
}
$s_FrameworkPath = dirname( dirname( __FILE__ ) ) . DIRECTORY_SEPARATOR;
if( $s_Path === APPLICATION_CONTROLLERS_DIRECTORY
OR is_dir( APPLICATION_PATH . str_replace( '/', DIRECTORY_SEPARATOR, $s_Path ) ) )
$s_Path .= '/' . APPLICATION_DEFAULT_CONTROLLER;
$this->o_Strategy = $this->Factory( $s_Path );
}
public function Factory( $s_Path )
{
$s_FrameworkPath = dirname( dirname( __FILE__ ) ) . DIRECTORY_SEPARATOR;
$s_Path = str_replace( '/', DIRECTORY_SEPARATOR, $s_Path );
$s_Class = str_replace( DIRECTORY_SEPARATOR, '_', $s_Path );
if( file_exists( APPLICATION_PATH . "$s_Path.php" )
OR file_exists( $s_FrameworkPath . "$s_Path.php" ) )
return eval( "$s_Class::GetInstance();" );
throw new Exception( "PAGE_NOT_FOUND", 404 );
}
}
} |
Partager