<?php 
 
/** 
 * This file is part of the CodeIgniter 4 framework. 
 * 
 * (c) CodeIgniter Foundation <[email protected]> 
 * 
 * For the full copyright and license information, please view the LICENSE 
 * file that was distributed with this source code. 
 */ 
 
use CodeIgniter\Router\RouteCollection; 
use CodeIgniter\Services; 
use Config\Autoload; 
use Config\Modules; 
use Config\Paths; 
 
error_reporting(E_ALL); 
ini_set('display_errors', '1'); 
ini_set('display_startup_errors', '1'); 
 
// Make sure it recognizes that we're testing. 
$_SERVER['CI_ENVIRONMENT'] = 'testing'; 
define('ENVIRONMENT', 'testing'); 
defined('CI_DEBUG') || define('CI_DEBUG', true); 
 
// Often these constants are pre-defined, but query the current directory structure as a fallback 
defined('HOMEPATH') || define('HOMEPATH', realpath(rtrim(getcwd(), '\\/ ')) . DIRECTORY_SEPARATOR); 
$source = is_dir(HOMEPATH . 'app') 
    ? HOMEPATH 
    : (is_dir('vendor/codeigniter4/framework/') 
        ? 'vendor/codeigniter4/framework/' 
        : 'vendor/codeigniter4/codeigniter4/'); 
defined('CONFIGPATH') || define('CONFIGPATH', realpath($source . 'app/Config') . DIRECTORY_SEPARATOR); 
defined('PUBLICPATH') || define('PUBLICPATH', realpath($source . 'public') . DIRECTORY_SEPARATOR); 
unset($source); 
 
// Load framework paths from their config file 
require CONFIGPATH . 'Paths.php'; 
$paths = new Paths(); 
 
// Define necessary framework path constants 
defined('APPPATH')       || define('APPPATH', realpath(rtrim($paths->appDirectory, '\\/ ')) . DIRECTORY_SEPARATOR); 
defined('WRITEPATH')     || define('WRITEPATH', realpath(rtrim($paths->writableDirectory, '\\/ ')) . DIRECTORY_SEPARATOR); 
defined('SYSTEMPATH')    || define('SYSTEMPATH', realpath(rtrim($paths->systemDirectory, '\\/')) . DIRECTORY_SEPARATOR); 
defined('ROOTPATH')      || define('ROOTPATH', realpath(APPPATH . '../') . DIRECTORY_SEPARATOR); 
defined('CIPATH')        || define('CIPATH', realpath(SYSTEMPATH . '../') . DIRECTORY_SEPARATOR); 
defined('FCPATH')        || define('FCPATH', realpath(PUBLICPATH) . DIRECTORY_SEPARATOR); 
defined('TESTPATH')      || define('TESTPATH', realpath(HOMEPATH . 'tests/') . DIRECTORY_SEPARATOR); 
defined('SUPPORTPATH')   || define('SUPPORTPATH', realpath(TESTPATH . '_support/') . DIRECTORY_SEPARATOR); 
defined('COMPOSER_PATH') || define('COMPOSER_PATH', realpath(HOMEPATH . 'vendor/autoload.php')); 
defined('VENDORPATH')    || define('VENDORPATH', realpath(HOMEPATH . 'vendor') . DIRECTORY_SEPARATOR); 
 
// Load Common.php from App then System 
if (file_exists(APPPATH . 'Common.php')) 
{ 
    require_once APPPATH . 'Common.php'; 
} 
 
require_once SYSTEMPATH . 'Common.php'; 
 
// Set environment values that would otherwise stop the framework from functioning during tests. 
if (! isset($_SERVER['app.baseURL'])) 
{ 
    $_SERVER['app.baseURL'] = 'http://example.com/'; 
} 
 
// Load necessary components 
require_once SYSTEMPATH . 'Config/AutoloadConfig.php'; 
require_once APPPATH . 'Config/Autoload.php'; 
require_once APPPATH . 'Config/Constants.php'; 
require_once SYSTEMPATH . 'Modules/Modules.php'; 
require_once APPPATH . 'Config/Modules.php'; 
 
require_once SYSTEMPATH . 'Autoloader/Autoloader.php'; 
require_once SYSTEMPATH . 'Config/BaseService.php'; 
require_once SYSTEMPATH . 'Config/Services.php'; 
require_once APPPATH . 'Config/Services.php'; 
 
// Use Config\Services as CodeIgniter\Services 
if (! class_exists('CodeIgniter\Services', false)) 
{ 
    class_alias('Config\Services', 'CodeIgniter\Services'); 
} 
 
// Launch the autoloader to gather namespaces (includes composer.json's "autoload-dev") 
$loader = Services::autoloader(); 
$loader->initialize(new Autoload(), new Modules()); 
$loader->register(); // Register the loader with the SPL autoloader stack. 
 
require_once APPPATH . 'Config/Routes.php'; 
 
/** 
 * @var RouteCollection $routes 
 */ 
$routes->getRoutes('*'); 
 
 |