diff --git a/Bin/autoload.php b/Bin/autoload.php index 4752203..a1b91ad 100644 --- a/Bin/autoload.php +++ b/Bin/autoload.php @@ -18,7 +18,7 @@ if ( !defined( 'CANARY_ROOT_DIRECTORY' ) ) { } if ( ! defined('CANARY_CONFIG_DIRECTORY' ) ) { - define('CANARY_CONFIG_DIRECTORY', CANARY_ROOT_DIRECTORY . 'config' . DIRECTORY_SEPARATOR); + define('CANARY_CONFIG_DIRECTORY', CANARY_ROOT_DIRECTORY . 'Config' . DIRECTORY_SEPARATOR); } if ( ! defined('CANARY_CONSTANTS_LOADED' ) ) { @@ -30,12 +30,14 @@ if ( class_exists( 'TheTempusProject\Hermes\Classes\Autoloader' ) ) { $autoloader->setRootFolder( CANARY_ROOT_DIRECTORY ); $autoloader->addNamespace( 'TheTempusProject\Canary\Classes', - 'classes' + 'Classes' ); $autoloader->addNamespace( 'TheTempusProject\Canary', - 'bin' + 'Bin' ); $Autoloader->register(); define( 'CANARY_AUTOLOADED', true ); } + +require_once 'Canary.php'; \ No newline at end of file diff --git a/Classes/CustomException.php b/Classes/CustomException.php new file mode 100644 index 0000000..a09d470 --- /dev/null +++ b/Classes/CustomException.php @@ -0,0 +1,78 @@ + + * @link https://TheTempusProject.com/Canary + * @license https://opensource.org/licenses/MIT [MIT LICENSE] + */ +namespace TheTempusProject\Canary\Classes; + +use Exception; +use TheTempusProject\Hermes\Functions\Redirect; +use TheTempusProject\Canary\Bin\Canary as Debug; + +class CustomException extends Exception { + private $originFunction = null; + private $exceptionName = null; + private $originClass = null; + private $data = null; + + /** + * This function allows the application to deal with errors + * in a dynamic way by letting you customize the response + * + * @param string $type - The type of the exception being called/thrown. + * @param string $data - Any additional data being passed with the exception. + * + * @example - throw new CustomException('model'); - Calls the model-missing exception + */ + public function __construct( $type, $data = null ) { + $this->originFunction = debug_backtrace()[1]['function']; + $this->originClass = debug_backtrace()[1]['class']; + $this->exceptionName = $type; + $this->data = $data; + switch ( $type ) { + case 'model': + Debug::error( 'Model not found: ' . $data ); + break; + case 'dbConnection': + Debug::error( 'Error Connecting to the database: ' . $data ); + break; + case 'DB': + Debug::error( 'Unspecified database error: ' . $data ); + break; + case 'view': + Debug::error( 'View not found: ' . $data ); + break; + case 'controller': + Debug::error( 'Controller not found: ' . $data ); + Redirect::to( 404 ); + break; + case 'defaultController': + Debug::error( 'DEFAULT Controller not found: ' . $data ); + Redirect::to( 404 ); + break; + case 'method': + Debug::error( 'Method not found: ' . $data ); + Redirect::to( 404 ); + break; + case 'simpleView': + Debug::error( 'View not found: ' . $data ); + break; + case 'defaultMethod': + Debug::error( 'DEFAULT Method not found: ' . $data ); + Redirect::to( 404 ); + break; + default: + Debug::error( 'Default exception: ' . $data ); + break; + } + } +}