A super easy PHP Framework for web development!
				https://github.com/exacti/phacil-framework
			
			
		
			You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							73 lines
						
					
					
						
							1.7 KiB
						
					
					
				
			
		
		
	
	
							73 lines
						
					
					
						
							1.7 KiB
						
					
					
				<?php
 | 
						|
 | 
						|
/**
 | 
						|
 * Copyright © 2022 ExacTI Technology Solutions. All rights reserved.
 | 
						|
 * GPLv3 General License.
 | 
						|
 * https://exacti.com.br
 | 
						|
 * Phacil PHP Framework - https://github.com/exacti/phacil-framework
 | 
						|
 * @author Bruno O. Notario <oliveira131@hotmail.com>
 | 
						|
 */
 | 
						|
 | 
						|
 
 | 
						|
namespace Phacil\Framework;
 | 
						|
 | 
						|
/**
 | 
						|
 * Exception extended for log on destruct
 | 
						|
 * @since 2.0.0
 | 
						|
 * @package Phacil\Framework
 | 
						|
 */
 | 
						|
class Exception extends \Exception
 | 
						|
{
 | 
						|
	public $errorFormat = 'text';
 | 
						|
 | 
						|
	protected $heritageTrace = false;
 | 
						|
 | 
						|
	/**
 | 
						|
	 * 
 | 
						|
	 * @param \Exception $object 
 | 
						|
	 * @return $this 
 | 
						|
	 */
 | 
						|
	public function setObject(\Exception $object){
 | 
						|
		$this->message = $object->getMessage();
 | 
						|
		$this->line = $object->getLine();
 | 
						|
		$this->heritageTrace = $object->getTrace();
 | 
						|
		$this->file = $object->getFile();
 | 
						|
		return $this;
 | 
						|
	}
 | 
						|
 | 
						|
	/**
 | 
						|
	 * Save the exceptions in the exceptions log file
 | 
						|
	 * @return void 
 | 
						|
	 */
 | 
						|
	public function __destruct()
 | 
						|
	{
 | 
						|
		$debugging = (\Phacil\Framework\Config::DEBUG()) ?: false;
 | 
						|
		$this->errorFormat = \Phacil\Framework\Config::DEBUG_FORMAT() ?: $this->errorFormat;
 | 
						|
 | 
						|
		$log = new \Phacil\Framework\Log("exception.log");
 | 
						|
 | 
						|
		$errorStamp = [
 | 
						|
			'error' => $this->getMessage(),
 | 
						|
			'line' => $this->getLine(),
 | 
						|
			'file' => $this->getFile(),
 | 
						|
			'trace' => ($debugging) ? (($this->errorFormat == 'json') ? ($this->heritageTrace ?: $this->getTrace()) : Debug::trace(($this->heritageTrace ?: $this->getTrace()))) : null
 | 
						|
		];
 | 
						|
		$log->write(($this->errorFormat == 'json') ? json_encode($errorStamp) : implode(PHP_EOL, array_map(
 | 
						|
			['self','convertArray'],
 | 
						|
			$errorStamp,
 | 
						|
			array_keys($errorStamp)
 | 
						|
		)));
 | 
						|
	}
 | 
						|
 | 
						|
	/**
 | 
						|
	 * 
 | 
						|
	 * @param string|array $v 
 | 
						|
	 * @param string $k 
 | 
						|
	 * @return string 
 | 
						|
	 */
 | 
						|
	static public function convertArray($v, $k) {
 | 
						|
		return sprintf("%s: %s", $k, (is_array($v) ? json_encode($v) : $v));
 | 
						|
	}
 | 
						|
	
 | 
						|
}
 | 
						|
 | 
						|
 |