PHP Classes

File: bootstrap/loaders/ld-bug-catcher.php

Recommend this page to a friend!
  Classes of Francisco Núñez   Catalyst   bootstrap/loaders/ld-bug-catcher.php   Download  
File: bootstrap/loaders/ld-bug-catcher.php
Role: Auxiliary script
Content type: text/plain
Description: Configuration script
Class: Catalyst
Framework to develop MVC-based PHP applications
Author: By
Last change:
Date: 2 days ago
Size: 3,136 bytes
 

Contents

Class file image Download
<?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);
        }
    }
}