<?php 
 
declare(strict_types=1); 
 
/************************************************************************************** 
 * 
 * Catalyst PHP Framework 
 * PHP Version 8.3 (Required). 
 * 
 * @package   Catalyst 
 * @subpackage Public 
 * @see       https://github.com/arcanisgk/catalyst 
 * 
 * @author    Walter Nuñez (arcanisgk/original founder) <[email protected]> 
 * @copyright 2023 - 2025 
 * @license   http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License 
 * 
 * @note      This program is distributed in the hope that it will be useful 
 *            WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 
 *            or FITNESS FOR A PARTICULAR PURPOSE. 
 * 
 * @category  Framework 
 * @filesource 
 * 
 * @link      https://catalyst.dock Local development URL 
 * 
 */ 
 
 
/** 
 * ld-bug-catcher.php 
 * 
 * This file serves as the primary entry point for the error handling system in the Catalyst framework. 
 * It loads only the necessary components for error capturing and logging without initializing 
 * the entire framework environment. This allows for early error detection before the main 
 * application code executes. 
 * 
 * The script follows these steps: 
 * 1. Load essential constants 
 * 2. Define a minimal manual autoloader for error handling classes 
 * 3. Initialize the BugCatcher system 
 * 
 * A flag (BUG_CATCHER_LOADED) is set to prevent duplicate initialization when the 
 * Composer autoloader later loads the same classes. 
 */ 
 
require_once realpath(implode(DIRECTORY_SEPARATOR, [dirname(__FILE__), '..', 'constant', 'sys-constant.php'])); 
require_once implode(DS, [PD, 'bootstrap', 'constant', 'class-constant.php']); 
 
if (!defined('INITIALIZED_BUG_CATCHER')) { 
    spl_autoload_register(function ($class) { 
        $supportedNamespaces = [ 
            'Catalyst\\Helpers\\Error\\' => 'app/Assets/Helpers/Error', 
            'Catalyst\\Framework\\Traits\\' => 'app/Assets/Framework/Traits', 
            'Catalyst\\Helpers\\Log\\' => 'app/Assets/Helpers/Log', 
            'Catalyst\\Helpers\\ToolBox\\' => 'app/Assets/Helpers/ToolBox', 
            'Catalyst\\Helpers\\IO\\' => 'app/Assets/Helpers/IO', 
            'Catalyst\\Framework\\Core\\Exceptions\\' => 'app/Framework/Core/Exceptions', 
            'Catalyst\\Framework\\Core\\Argument\\' => 'app/Framework/Core/Argument' 
        ]; 
 
        foreach ($supportedNamespaces as $namespace => $path) { 
            if (str_starts_with($class, $namespace)) { 
                $relativeClass = substr($class, strlen($namespace)); 
 
                $file = implode(DS, [PD, str_replace('\\', DS, $path), str_replace('\\', DS, $relativeClass) . '.php']); 
 
                if (file_exists($file)) { 
                    require_once $file; 
                    return true; 
                } 
            } 
        } 
        return false; 
    }); 
 
    $bugCatcherPath = implode(DS, [PD, 'app', 'Assets', 'Helpers', 'Error', 'BugCatcher.php']); 
    if (file_exists($bugCatcherPath)) { 
        require_once $bugCatcherPath; 
 
        if (!defined('INITIALIZED_BUG_CATCHER')) { 
            define('INITIALIZED_BUG_CATCHER', true); 
        } 
    } 
} 
 
 
 |