<?php 
/** 
 * This file is part of the O2System PHP Framework package. 
 * 
 * For the full copyright and license information, please view the LICENSE 
 * file that was distributed with this source code. 
 * 
 * @author         Steeve Andrian Salim 
 * @copyright      Copyright (c) Steeve Andrian Salim 
 */ 
// ------------------------------------------------------------------------ 
 
// Valid PHP Version? 
$minPHPVersion = '7.2'; 
if (phpversion() < $minPHPVersion) 
{ 
    die("Your PHP version must be {$minPHPVersion} or higher to run O2System. Current version: " . phpversion()); 
} 
unset($minPHPVersion); 
 
// ------------------------------------------------------------------------ 
 
define( 'STARTUP_TIME', microtime( true ) ); 
define( 'STARTUP_MEMORY', memory_get_usage( true ) ); 
 
/* 
 *--------------------------------------------------------------- 
 * APPLICATION ENVIRONMENT 
 *--------------------------------------------------------------- 
 * 
 * You can load different configurations depending on your 
 * current environment. Setting the environment also influences 
 * things like logging and error reporting. 
 * 
 * This can be set to anything, but default usage is: 
 * 
 *     development 
 *     testing 
 *     production 
 * 
 * NOTE: If you change these, also change the error_reporting() code below 
 * 
 */ 
if ( ! defined( 'ENVIRONMENT' ) ) { 
    /** 
     * Environment Stage 
     * 
     * @value DEVELOPMENT|TESTING|PRODUCTION 
     */ 
    define( 'ENVIRONMENT', 'DEVELOPMENT' ); 
 
    /** 
     * Environment Debug Stage 
     * 
     * @value DEVELOPER|TESTER|PUBLIC 
     */ 
    $_ENV[ 'DEBUG_STAGE' ] = 'DEVELOPER'; 
} 
 
/* 
 *--------------------------------------------------------------- 
 * APP FOLDER NAME 
 *--------------------------------------------------------------- 
 * 
 * Application folder name. 
 * 
 * NO TRAILING SLASH! 
 */ 
if ( ! defined( 'DIR_APP' ) ) { 
    define( 'DIR_APP', 'app' ); 
} 
 
/* 
 *--------------------------------------------------------------- 
 * CACHE FOLDER NAME 
 *--------------------------------------------------------------- 
 * 
 * Caching folder name. 
 * 
 * NO TRAILING SLASH! 
 */ 
if ( ! defined( 'DIR_CACHE' ) ) { 
    define( 'DIR_CACHE', 'cache' ); 
} 
 
/* 
 *--------------------------------------------------------------- 
 * STORAGE FOLDER NAME 
 *--------------------------------------------------------------- 
 * 
 * Storage folder name. 
 * 
 * NO TRAILING SLASH! 
 */ 
if ( ! defined( 'DIR_STORAGE' ) ) { 
    define( 'DIR_STORAGE', 'storage' ); 
} 
 
/* 
 *--------------------------------------------------------------- 
 * RESOURCES FOLDER NAME 
 *--------------------------------------------------------------- 
 * 
 * Resources folder name. 
 * 
 * NO TRAILING SLASH! 
 */ 
if ( ! defined( 'DIR_RESOURCES' ) ) { 
    define( 'DIR_RESOURCES', 'resources' ); 
} 
 
/* 
 *--------------------------------------------------------------- 
 * DATABASE FOLDER NAME 
 *--------------------------------------------------------------- 
 * 
 * Database folder name. 
 * 
 * NO TRAILING SLASH! 
 */ 
if ( ! defined( 'DIR_DATABASE' ) ) { 
    define( 'DIR_DATABASE', 'database' ); 
} 
 
/* 
 *--------------------------------------------------------------- 
 * PUBLIC FOLDER NAME 
 *--------------------------------------------------------------- 
 * 
 * Accessible folder by public. 
 * 
 * NO TRAILING SLASH! 
 */ 
if ( ! defined( 'DIR_PUBLIC' ) ) { 
    // cpanel based hosting 
    if(is_dir('../public_html')) { 
        define( 'DIR_PUBLIC', 'public' ); 
    } else { 
        define( 'DIR_PUBLIC', 'public' ); 
    } 
} 
 
/* 
 *--------------------------------------------------------------- 
 * DEFINE ROOT PATH 
 *--------------------------------------------------------------- 
 */ 
define( 'PATH_ROOT', dirname( __FILE__ ) . DIRECTORY_SEPARATOR ); 
 
/* 
 *--------------------------------------------------------------- 
 * POINTING FRONT CONTROLLER DIRECTORY 
 *--------------------------------------------------------------- 
 * 
 * Ensure the current directory is pointing to the front controller's directory 
 */ 
chdir( __DIR__ . DIRECTORY_SEPARATOR ); 
 
/* 
|-------------------------------------------------------------------------- 
| Register The Composer Auto Loader 
|-------------------------------------------------------------------------- 
| 
| Composer provides a convenient, automatically generated class loader 
| for our application. We just need to utilize it! We'll require it 
| into the script here so that we do not have to worry about the 
| loading of any our classes "manually". Feels great to relax. 
| 
*/ 
require __DIR__ . '/vendor/autoload.php'; 
 
/* 
 * ------------------------------------------------------ 
 * STARTUP O2SYSTEM 
 * ------------------------------------------------------ 
 */ 
if ( class_exists( 'O2System\Framework', false ) ) { 
    O2System\Framework::getInstance(); 
} 
 
 |