From 4fa87c349cafea98719e58065c2ffda26db754f8 Mon Sep 17 00:00:00 2001 From: Netkas Date: Tue, 10 Oct 2023 23:29:26 -0400 Subject: [PATCH] Remove unused ConfigException class, make code style adjustments Deleted ConfigException class as it was not being used anywhere in the project. Code style adjustments were made to conform with the PSR-12 coding standard. This includes property and variable naming conventions, use of strict equality operators, reformatting of code and removal of unnecessary comments. The .idea/php.xml file was also updated to a newer version of the library. Log functions are updated to throw exceptions for non-existent message and invalid level. Also, LogLib is now registered/unregistered as an exception handler. Other adjustments were made to achieve consistency in the codebase including renaming properties for clarity, moving magic strings into constants, improving code readability and adding descriptive comments. --- .gitlab-ci.yml | 63 ++++---- .idea/php.xml | 3 +- CHANGELOG.md | 12 ++ Makefile | 39 ++++- README.md | 13 +- project.json | 10 +- src/LogLib/Abstracts/CallType.php | 32 +++- src/LogLib/Abstracts/ConsoleColors.php | 103 +++++++----- src/LogLib/Abstracts/LevelType.php | 59 +++++-- src/LogLib/Classes/Console.php | 153 ++++++++++-------- src/LogLib/Classes/Utilities.php | 152 +++++++++-------- src/LogLib/Classes/Validate.php | 112 ++++++------- .../Exceptions/ConfigurationException.php | 21 --- src/LogLib/Log.php | 126 +++++++++------ src/LogLib/Objects/Backtrace.php | 119 +++++++------- src/LogLib/Objects/Event.php | 79 ++++++--- src/LogLib/Objects/Options.php | 9 +- src/LogLib/Objects/RuntimeOptions.php | 55 ++++--- 18 files changed, 666 insertions(+), 494 deletions(-) delete mode 100644 src/LogLib/Exceptions/ConfigurationException.php diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index c416e4a..a1fc214 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,43 +1,42 @@ -image: php:8.1 +image: repo.n64.cc:443/nosial/ncc:latest -before_script: - # Install some stuff that the image doesn't come with - - apt update -yqq - - apt install git libpq-dev libzip-dev zip make wget gnupg -yqq +stages: + - build + - publish - # Install phive - - wget -O phive.phar https://phar.io/releases/phive.phar - - wget -O phive.phar.asc https://phar.io/releases/phive.phar.asc - - gpg --keyserver hkps://keys.openpgp.org --recv-keys 0x9D8A98B29B2D5D79 - - gpg --verify phive.phar.asc phive.phar - - chmod +x phive.phar - - mv phive.phar /usr/local/bin/phive - - # Install phab - - phive install phpab --global --trust-gpg-keys 0x2A8299CE842DD38C - - # Install the latest version of ncc (Nosial Code Compiler) - - git clone https://git.n64.cc/nosial/ncc.git - - cd ncc - - make redist - - php build/src/INSTALL --auto --install-composer - - cd .. && rm -rf ncc +variables: + PACKAGE_NAME: $CI_COMMIT_REF_NAME build: + stage: build script: - - ncc build --config release --log-level debug + - ncc build --config release --log-level debug -o "build/release/net.nosial.loglib.ncc" artifacts: paths: - - build/ - rules: - - if: $CI_COMMIT_BRANCH + - "build/release/net.nosial.loglib.ncc" -release: - stage: deploy +build_static: + stage: build script: - - ncc build --config release --log-level debug + - ncc build --config release_static --log-level debug -o "build/release/net.nosial.loglib_static.ncc" artifacts: paths: - - build/ - rules: - - if: $CI_COMMIT_TAG \ No newline at end of file + - "build/release/net.nosial.loglib_static.ncc" + +publish: + stage: publish + before_script: + - 'if [ "$CI_COMMIT_REF_NAME" == "master" ]; then PACKAGE_NAME="latest"; fi' + script: + - | + curl --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file build/release/net.nosial.loglib.ncc \ + "https://$CI_SERVER_HOST/api/v4/projects/$CI_PROJECT_ID/packages/generic/${PACKAGE_NAME}/${CI_COMMIT_SHA}/net.nosial.loglib.ncc" + +publish_static: + stage: publish + before_script: + - 'if [ "$CI_COMMIT_REF_NAME" == "master" ]; then PACKAGE_NAME="latest"; fi' + script: + - | + curl --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file build/release/net.nosial.loglib_static.ncc \ + "https://$CI_SERVER_HOST/api/v4/projects/$CI_PROJECT_ID/packages/generic/${PACKAGE_NAME}/${CI_COMMIT_SHA}/net.nosial.loglib_static.ncc" \ No newline at end of file diff --git a/.idea/php.xml b/.idea/php.xml index cb05848..d821935 100644 --- a/.idea/php.xml +++ b/.idea/php.xml @@ -12,8 +12,7 @@ - - + diff --git a/CHANGELOG.md b/CHANGELOG.md index af3fabb..82ac448 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,16 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [1.1.0] - Unreleased + +Updated loglib to work with ncc 2.+. + +### Changed + + - Various code improvements and optimizations + - Removed unused code + + ## [1.0.2] - 2023-07-06 ### Changed @@ -15,12 +25,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 * Fixed mistake in `\LogLib\Classes > Console > outException()` where the function attempts to print out a previous exception by calling `getPrevious()` as an array instead of a function call. + ## [1.0.1] - 2023-02-10 ### Added * Added PSR compatible LoggerInterface implementation (\LogLib\Psr) * Added new option `--log-level` to set the log level (Can also be applied via the environment variable `LOG_LEVEL`) + ## [1.0.0] - 2023-01-29 ### Added diff --git a/Makefile b/Makefile index 335f36b..9494615 100644 --- a/Makefile +++ b/Makefile @@ -1,8 +1,37 @@ -build: - ncc build --config="release" --log-level debug +# Variables +NCC = ncc +PACKAGE_NAME = net.nosial.loglib.ncc +BUILD_CONFIG = release +BUILD_STATIC_CONFIG = release_static -install: - sudo ncc package install --package="build/release/net.nosial.loglib.ncc" --skip-dependencies --reinstall -y --log-level debug +# Directories +SRC_DIR = src +BUILD_DIR = build +RELEASE_BUILD_DIR = $(BUILD_DIR)/$(BUILD_CONFIG) +RELEASE_STATIC_BUILD_DIR = $(BUILD_DIR)/$(BUILD_STATIC_CONFIG) + +.PHONY: all release release_static install uninstall clean + +all: release release_static install + +release: prepare_build + $(NCC) build --config=$(BUILD_CONFIG) --out-dir=$(RELEASE_BUILD_DIR) + +release_static: prepare_build_static + $(NCC) build --config=$(BUILD_STATIC_CONFIG) --out-dir=$(RELEASE_STATIC_BUILD_DIR) + +install: prepare_build + $(NCC) package install --package="$(RELEASE_BUILD_DIR)/$(PACKAGE_NAME)" --skip-dependencies -y + +uninstall: + $(NCC) package uninstall -y --package="$(PACKAGE_NAME)" clean: - rm -rf build \ No newline at end of file + rm -rf $(RELEASE_BUILD_DIR) + rm -rf $(RELEASE_STATIC_BUILD_DIR) + +prepare_build: + mkdir -p $(RELEASE_BUILD_DIR) + +prepare_build_static: + mkdir -p $(RELEASE_STATIC_BUILD_DIR) \ No newline at end of file diff --git a/README.md b/README.md index 9d8d5b6..b3f760c 100644 --- a/README.md +++ b/README.md @@ -32,7 +32,6 @@ the `build.dependencies` section: { "name": "net.nosial.loglib", "version": "latest", - "source_type": "remote", "source": "nosial/libs.log=latest@n64" } ``` @@ -70,12 +69,12 @@ multiple error levels that can be used to log messages require 'ncc'; import('net.nosial.loglib'); - \LogLib\Log::debug('This is a debug message'); - \LogLib\Log::verbose('This is a verbose message'); - \LogLib\Log::info('This is an info message'); - \LogLib\Log::warning('This is a warning message'); - \LogLib\Log::error('This is an error message'); - \LogLib\Log::fatal('This is a fatal message'); + \LogLib\Log::debug('com.example.lib', 'This is a debug message'); + \LogLib\Log::verbose('com.example.lib', 'This is a verbose message'); + \LogLib\Log::info('com.example.lib', 'This is an info message'); + \LogLib\Log::warning('com.example.lib', 'This is a warning message'); + \LogLib\Log::error('com.example.lib', 'This is an error message'); + \LogLib\Log::fatal('com.example.lib', 'This is a fatal message'); ``` diff --git a/project.json b/project.json index 642b01a..3f75430 100644 --- a/project.json +++ b/project.json @@ -31,7 +31,6 @@ { "name": "net.nosial.optslib", "version": "latest", - "source_type": "remote", "source": "nosial/libs.opts=latest@n64" } ], @@ -39,10 +38,15 @@ { "name": "release", "build_type": "ncc", + "output": "build/release/%ASSEMBLY.PACKAGE%.ncc" + }, + { + "name": "release_static", + "build_type": "ncc", "options": { - "compression": "high" + "static": true }, - "output_path": "build/release" + "output": "build/release/%ASSEMBLY.PACKAGE%_static.ncc" } ] } diff --git a/src/LogLib/Abstracts/CallType.php b/src/LogLib/Abstracts/CallType.php index 5673b50..b83b4a6 100644 --- a/src/LogLib/Abstracts/CallType.php +++ b/src/LogLib/Abstracts/CallType.php @@ -2,9 +2,33 @@ namespace LogLib\Abstracts; - abstract class CallType + final class CallType { - const MethodCall = '->'; - const StaticCall = '::'; - const FunctionCall = ' '; + /** + * Represents a method call. + * + * @var string METHOD_CALL + */ + public const METHOD_CALL = '->'; + + /** + * Represents a static method call. + * + * @var string STATIC_CALL + */ + public const STATIC_CALL = '::'; + + /** + * Represents a function call. + * + * @var string FUNCTION_CALL + */ + public const FUNCTION_CALL = '()'; + + /** + * Represents a lambda function call. + * + * @var string LAMBDA_CALL + */ + public const LAMBDA_CALL = 'λ'; } \ No newline at end of file diff --git a/src/LogLib/Abstracts/ConsoleColors.php b/src/LogLib/Abstracts/ConsoleColors.php index 648c549..fe0f4cb 100644 --- a/src/LogLib/Abstracts/ConsoleColors.php +++ b/src/LogLib/Abstracts/ConsoleColors.php @@ -2,53 +2,74 @@ namespace LogLib\Abstracts; - abstract class ConsoleColors + final class ConsoleColors { - const Black = "0;30"; - const DarkGray = "1;30"; - const Blue = "0;34"; - const LightBlue = "1;34"; - const Green = "0;32"; - const LightGreen = "1;32"; - const Cyan = "0;36"; - const LightCyan = "1;36"; - const Red = "0;31"; - const LightRed = "1;31"; - const Purple = "0;35"; - const LightPurple = "1;35"; - const Brown = "0;33"; - const Yellow = "1;33"; - const LightGray = "0;37"; - const White = "1;37"; - const Reset = "0"; + public const BLACK = "0;30"; - const All = [ - self::Black, - self::DarkGray, - self::Blue, - self::LightBlue, - self::Green, - self::LightGreen, - self::Cyan, - self::LightCyan, - self::Red, - self::LightRed, - self::Purple, - self::LightPurple, - self::Brown, - self::Yellow, - self::LightGray, - self::White + public const DARK_GRAY = "1;30"; + + public const BLUE = "0;34"; + + public const LIGHT_BLUE = "1;34"; + + public const GREEN = "0;32"; + + public const LIGHT_GREEN = "1;32"; + + public const CYAN = "0;36"; + + public const LIGHT_CYAN = "1;36"; + + public const RED = "0;31"; + + public const LIGHT_RED = "1;31"; + + public const PURPLE = "0;35"; + + public const LIGHT_PURPLE = "1;35"; + + public const BROWN = "0;33"; + + public const YELLOW = "1;33"; + + public const LIGHT_GRAY = "0;37"; + + public const WHITE = "1;37"; + + public const RESET = "0"; + + /** + * Represents an array of all possible supported color values. + * + * @var array + */ + public const ALL = [ + self::BLACK, + self::DARK_GRAY, + self::BLUE, + self::LIGHT_BLUE, + self::GREEN, + self::LIGHT_GREEN, + self::CYAN, + self::LIGHT_CYAN, + self::RED, + self::LIGHT_RED, + self::PURPLE, + self::LIGHT_PURPLE, + self::BROWN, + self::YELLOW, + self::LIGHT_GRAY, + self::WHITE ]; /** * A list of random usable bright colors */ - const BrightColors = [ - self::LightBlue, - self::LightGreen, - self::LightCyan, - self::LightRed, - self::LightPurple, + public const BRIGHT_COLORS = [ + self::LIGHT_BLUE, + self::LIGHT_GREEN, + self::LIGHT_CYAN, + self::LIGHT_RED, + self::LIGHT_PURPLE, ]; } \ No newline at end of file diff --git a/src/LogLib/Abstracts/LevelType.php b/src/LogLib/Abstracts/LevelType.php index 661ee9b..8fddd47 100644 --- a/src/LogLib/Abstracts/LevelType.php +++ b/src/LogLib/Abstracts/LevelType.php @@ -2,26 +2,53 @@ namespace LogLib\Abstracts; - abstract class LevelType + final class LevelType { - const Silent = 0; - const Fatal = 1; - const Error = 2; - const Warning = 3; - const Info = 4; - const Verbose = 5; - const Debug = 6; + /** + * Silent type. + */ + public const SILENT = 0; + + /** + * Fatal type. + */ + public const FATAL = 1; + + /** + * Error type. + */ + public const ERROR = 2; + + /** + * + */ + public const WARNING = 3; + + /** + * Information type. + */ + public const INFO = 4; + + /** + * Verbose type. + */ + public const VERBOSE = 5; + + /** + * Debug type. + */ + public const DEBUG = 6; /** * All types. */ - const All = [ - self::Silent, - self::Fatal, - self::Error, - self::Warning, - self::Info, - self::Verbose, - self::Debug + public const ALL = [ + self::SILENT, + self::FATAL, + self::ERROR, + self::WARNING, + self::INFO, + self::VERBOSE, + self::DEBUG ]; } \ No newline at end of file diff --git a/src/LogLib/Classes/Console.php b/src/LogLib/Classes/Console.php index 0c2afb4..41f864a 100644 --- a/src/LogLib/Classes/Console.php +++ b/src/LogLib/Classes/Console.php @@ -4,11 +4,13 @@ namespace LogLib\Classes; + use Exception; use LogLib\Abstracts\ConsoleColors; use LogLib\Abstracts\LevelType; use LogLib\Log; use LogLib\Objects\Event; use LogLib\Objects\Options; + use RuntimeException; use Throwable; class Console @@ -20,30 +22,42 @@ /** - * @var float|int + * @var float|int|null */ private static $last_tick_time; /** - * @var int + * @var int|null */ private static $largest_tick_length; /** - * Formats the application color for the console + * Formats the application name with a color for the console * - * @param string $application - * @return string + * @param string $application The application name + * @return string The formatted application name + * @throws RuntimeException If unable to generate a random color for the application */ private static function formatAppColor(string $application): string { - if(!Log::getRuntimeOptions()->isDisplayAnsi()) + if(!Log::getRuntimeOptions()->displayAnsi()) + { return $application; + } if(!isset(self::$application_colors[$application])) { - $colors = ConsoleColors::BrightColors; - $color = $colors[array_rand($colors)]; + $colors = ConsoleColors::BRIGHT_COLORS; + + try + { + $color = $colors[random_int(0, count($colors) - 1)]; + } + catch (Exception $e) + { + throw new RuntimeException(sprintf('Unable to generate random color for application "%s"', $application), $e->getCode(), $e); + } + self::$application_colors[$application] = $color; } @@ -51,79 +65,72 @@ } /** - * Returns a color formatted string for the console + * Applies a specified color to the given text, using ANSI escape sequences. * - * @param string $text - * @param string $color - * @return string + * @param string $text The text to apply the color to. + * @param string $color The ANSI color code to apply to the text. + * @return string The text with the specified color applied. */ private static function color(string $text, string $color): string { - if(!Log::getRuntimeOptions()->isDisplayAnsi()) + if(!Log::getRuntimeOptions()->displayAnsi()) + { return $text; + } return "\033[" . $color . "m" . $text . "\033[0m"; } /** - * Colorizes a event string for the console + * Applies a specified color to the given text, based on the event level, using ANSI escape sequences. * - * @param Event $event - * @param string $text - * @return string + * @param Event $event The event object. + * @param string $text The text to apply the color to. + * @return string The text with the specified color applied. */ private static function colorize(Event $event, string $text): string { - if(!Log::getRuntimeOptions()->isDisplayAnsi()) - return Utilities::levelToString($text); - - $color = null; - switch($event->Level) + if(!Log::getRuntimeOptions()->displayAnsi()) { - case LevelType::Debug: - $color = ConsoleColors::LightPurple; - break; - case LevelType::Verbose: - $color = ConsoleColors::LightCyan; - break; - case LevelType::Info: - $color = ConsoleColors::White; - break; - case LevelType::Warning: - $color = ConsoleColors::Yellow; - break; - case LevelType::Fatal: - $color = ConsoleColors::Red; - break; - case LevelType::Error: - $color = ConsoleColors::LightRed; - break; + return Utilities::levelToString($text); } - if($color == null) + $color = match($event->getLevel()) + { + LevelType::DEBUG => ConsoleColors::LIGHT_PURPLE, + LevelType::VERBOSE => ConsoleColors::LIGHT_CYAN, + LevelType::INFO => ConsoleColors::WHITE, + LevelType::WARNING => ConsoleColors::YELLOW, + LevelType::FATAL => ConsoleColors::RED, + LevelType::ERROR => ConsoleColors::LIGHT_RED, + default => null, + }; + + if($color === null) + { return Utilities::levelToString($text); + } return self::color(Utilities::levelToString($text), $color); } /** - * Returns the current timestamp tick + * Retrieves the current timestamp as a formatted string. * - * @return string + * @return string The current timestamp. */ private static function getTimestamp(): string { $tick_time = (string)microtime(true); - if(strlen($tick_time) > self::$largest_tick_length) + if(!is_null(self::$largest_tick_length) && strlen($tick_time) > (int)self::$largest_tick_length) { self::$largest_tick_length = strlen($tick_time); } if(strlen($tick_time) < self::$largest_tick_length) { - /** @noinspection PhpRedundantOptionalArgumentInspection */ - $tick_time = str_pad($tick_time, (strlen($tick_time) + (self::$largest_tick_length - strlen($tick_time))), ' ', STR_PAD_RIGHT); + $tick_time = str_pad($tick_time, (strlen($tick_time) + (self::$largest_tick_length - strlen($tick_time)))); } $fmt_tick = $tick_time; @@ -133,11 +140,11 @@ if ($timeDiff > 1.0) { - $fmt_tick = \ncc\Utilities\Console::formatColor($tick_time, \ncc\Abstracts\ConsoleColors::LightRed); + $fmt_tick = self::color($tick_time, ConsoleColors::LIGHT_RED); } elseif ($timeDiff > 0.5) { - $fmt_tick = self::color($tick_time, ConsoleColors::Yellow); + $fmt_tick = self::color($tick_time, ConsoleColors::YELLOW); } } @@ -146,54 +153,58 @@ } /** - * Regular console output for the event object + * Outputs a log event to the console. * - * @param Options $options - * @param Event $event + * @param Options $options The options configuration object. + * @param Event $event The log event to output. * @return void */ public static function out(Options $options, Event $event): void { if(!Utilities::runningInCli()) - return; - - if(Validate::checkLevelType(LevelType::Verbose, Log::getRuntimeOptions()->getLogLevel())) { - $backtrace_output = Utilities::getTraceString($event, Log::getRuntimeOptions()->isDisplayAnsi()); + return; + } - print(sprintf( - "[%s] [%s] [%s] %s %s" . PHP_EOL, + if(Validate::checkLevelType(LevelType::VERBOSE, Log::getRuntimeOptions()->getLoglevel())) + { + $backtrace_output = Utilities::getTraceString($event, Log::getRuntimeOptions()->displayAnsi()); + + print(sprintf("[%s] [%s] [%s] %s %s" . PHP_EOL, self::getTimestamp(), self::formatAppColor($options->getApplicationName()), - self::colorize($event, $event->Level), - $backtrace_output, $event->Message + self::colorize($event, $event->getLevel()), + $backtrace_output, $event->getMessage() )); - if($event->Exception !== null) - self::outException($event->Exception); + if($event->getException() !== null) + { + /** @noinspection NullPointerExceptionInspection */ + self::outException($event->getException()); + } return; } - print(sprintf( - "[%s] [%s] [%s] %s" . PHP_EOL, + print(sprintf("[%s] [%s] [%s] %s" . PHP_EOL, self::getTimestamp(), self::formatAppColor($options->getApplicationName()), - self::colorize($event, $event->Level), - $event->Message + self::colorize($event, $event->getLevel()), + $event->getMessage() )); } /** - * Prints out the exception details + * Prints information about the given exception, including the error message, error code, + * and stack trace. * - * @param Throwable $exception + * @param Throwable $exception The exception to print information about. * @return void */ private static function outException(Throwable $exception): void { - $trace_header = self::color($exception->getFile() . ':' . $exception->getLine(), ConsoleColors::Purple); - $trace_error = self::color('error: ', ConsoleColors::Red); + $trace_header = self::color($exception->getFile() . ':' . $exception->getLine(), ConsoleColors::PURPLE); + $trace_error = self::color('error: ', ConsoleColors::RED); print($trace_header . ' ' . $trace_error . $exception->getMessage() . PHP_EOL); print(sprintf('Error code: %s', $exception->getCode()) . PHP_EOL); @@ -204,13 +215,15 @@ print('Stack Trace:' . PHP_EOL); foreach($trace as $item) { - print( ' - ' . self::color($item['file'], ConsoleColors::Red) . ':' . $item['line'] . PHP_EOL); + print( ' - ' . self::color($item['file'], ConsoleColors::RED) . ':' . $item['line'] . PHP_EOL); } } if($exception->getPrevious() !== null) { print('Previous Exception:' . PHP_EOL); + + /** @noinspection NullPointerExceptionInspection */ self::outException($exception->getPrevious()); } } diff --git a/src/LogLib/Classes/Utilities.php b/src/LogLib/Classes/Utilities.php index 7e41eea..e861322 100644 --- a/src/LogLib/Classes/Utilities.php +++ b/src/LogLib/Classes/Utilities.php @@ -2,6 +2,7 @@ namespace LogLib\Classes; + use LogLib\Abstracts\CallType; use LogLib\Abstracts\LevelType; use LogLib\Objects\Backtrace; use LogLib\Objects\Event; @@ -11,23 +12,29 @@ class Utilities { /** - * Returns the current backtrace + * Returns a backtrace of the calling code. * - * @param bool $full - * @return array + * @param bool $full Determines whether the full backtrace should be returned or not. Default is false. + * @return array An array containing backtrace information. + * Each element in the array represents a single call in the call stack and is an instance of the Backtrace class. + * If the debug_backtrace () function is not available, an empty array will be returned. */ public static function getBacktrace(bool $full=false): array { if(!function_exists('debug_backtrace')) + { return []; + } $backtrace = debug_backtrace(); $results = []; foreach($backtrace as $trace) { - if(isset($trace['class'] ) && str_contains($trace['class'], 'LogLib') && !$full) + if(!$full && isset($trace['class']) && str_contains($trace['class'], 'LogLib')) + { continue; + } $results[] = new Backtrace($trace); } @@ -36,34 +43,32 @@ } /** - * Returns the current level type as a string * - * @param int $level - * @return string */ public static function levelToString(int $level): string { return match ($level) { - LevelType::Debug => 'DBG', - LevelType::Verbose => 'VRB', - LevelType::Info => 'INF', - LevelType::Warning => 'WRN', - LevelType::Fatal => 'CRT', - LevelType::Error => 'ERR', + LevelType::DEBUG => 'DBG', + LevelType::VERBOSE => 'VRB', + LevelType::INFO => 'INF', + LevelType::WARNING => 'WRN', + LevelType::FATAL => 'CRT', + LevelType::ERROR => 'ERR', default => 'UNK', }; } /** - * A simple method to determine if the current environment is a CLI environment + * Determines whether the application is currently running in the command line interface (CLI) mode. * - * @return bool + * @return bool true if running in CLI mode, false otherwise. */ public static function runningInCli(): bool { if(function_exists('php_sapi_name')) { + /** @noinspection ConstantCanBeUsedInspection */ return strtolower(php_sapi_name()) === 'cli'; } @@ -76,68 +81,74 @@ } /** - * Attempts to determine the current log level from the command line arguments + * Returns the log level based on the configuration. * - * @return int + * @return int The log level. This value represents the severity or importance of the log messages. + * The returned value will be one of the constants defined in the LevelType class: + * - DEBUG (6) + * - VERBOSE (5) + * - INFO (4) + * - WARNING (3) + * - ERROR (2) + * - FATAL (1) + * - SILENT (0) + * If no log level is configured or the configured level is not recognized, the INFO level (4) will be returned by default. */ public static function getLogLevel(): int { $args = Parse::getArguments(); - $selected_level = ($args['log'] ?? $args['log-level'] ?? (getenv('LOG_LEVEL') ?: null) ?? null); - - if($selected_level === null) - return LevelType::Info; - - switch(strtolower($selected_level)) + switch(strtolower(($args['log'] ?? $args['log-level'] ?? (getenv('LOG_LEVEL') ?: null) ?? null))) { - case LevelType::Debug: + case LevelType::DEBUG: case 'debug': case '6': case 'dbg': - return LevelType::Debug; + return LevelType::DEBUG; - case LevelType::Verbose: + case LevelType::VERBOSE: case 'verbose': case '5': case 'vrb': - return LevelType::Verbose; + return LevelType::VERBOSE; default: - case LevelType::Info: + case LevelType::INFO: case 'info': case '4': case 'inf': - return LevelType::Info; + return LevelType::INFO; - case LevelType::Warning: + case LevelType::WARNING: case 'warning': case '3': case 'wrn': - return LevelType::Warning; + return LevelType::WARNING; - case LevelType::Error: + case LevelType::ERROR: case 'error': case '2': case 'err': - return LevelType::Error; + return LevelType::ERROR; - case LevelType::Fatal: + case LevelType::FATAL: case 'fatal': case '1': case 'crt': - return LevelType::Fatal; + return LevelType::FATAL; - case LevelType::Silent: + case LevelType::SILENT: case 'silent': case '0': case 'sil': - return LevelType::Silent; + return LevelType::SILENT; } } /** - * @return bool + * Checks if ANSI escape sequences should be displayed in the output. + * + * @return bool Returns true if ANSI escape sequences should be displayed, false otherwise. */ public static function getDisplayAnsi(): bool { @@ -145,51 +156,30 @@ $display_ansi = ($args['display-ansi'] ?? $args['ansi'] ?? null); if($display_ansi === null) + { return true; + } // Strict boolean response return strtolower($display_ansi) === 'true' || $display_ansi === '1'; } /** - * Returns the current active log file name, the current value can - * change depending on the date/time, if it has changed; close the - * old file and open a new one. + * Returns a string representation of the backtrace for the given event. * - * @return string - */ - public static function getLogFilename(): string - { - return date('Y-m-d') . '.log'; - } - - /** - * Returns a random string of characters - * - * @param int $length - * @return string - */ - public static function randomString(int $length = 32): string - { - $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; - $charactersLength = strlen($characters); - $randomString = ''; - for ($i = 0; $i < $length; $i++) - { - $randomString .= $characters[rand(0, $charactersLength - 1)]; - } - return $randomString; - } - - /** - * @param Event $event - * @param bool $ansi - * @return string|null + * @param Event $event The event object for which to generate the backtrace string. + * @param bool $ansi Determines whether the output should include ANSI escape codes for colored output. Default is false. + * @return string|null A string representation of the backtrace for the event, or null if the event has no backtrace. + * The output format is: ClassName::methodName() or functionName() depending on the type of call. + * If $ansi is true, the output will be colored using ANSI escape codes. + * If the event has no backtrace, the constant CallType::LAMBDA_CALL will be returned. */ public static function getTraceString(Event $event, bool $ansi=false): ?string { - if($event->getBacktrace() == null) - return 'λ'; + if($event->getBacktrace() === null) + { + return CallType::LAMBDA_CALL; + } $backtrace = $event->getBacktrace()[0]; $function = $backtrace->getFunction(); @@ -201,18 +191,22 @@ $class = "\033[1;37m$class\033[0m"; } - if($class == null) - return "{$function}()"; + if($class === null) + { + return $function . CallType::FUNCTION_CALL; + } - $type = ($backtrace->getType() == '->' ? '->' : '::'); - return "{$class}{$type}{$function}()"; + $type = ($backtrace->getType() === CallType::METHOD_CALL ? CallType::METHOD_CALL : CallType::STATIC_CALL); + return "{$class}{$type}{$function}" . CallType::FUNCTION_CALL; } /** - * Returns an array representation of a throwable exception + * Converts an exception object to an array representation. * - * @param Throwable $e - * @return array + * @param Throwable $e The exception object to convert. + * @return array An array containing the details of the exception. + * The array includes the exception message, code, file, line, and a formatted trace. + * The trace is formatted as a string containing the file, line, class, type, and function for each call in the traceback. */ public static function exceptionToArray(Throwable $e): array { diff --git a/src/LogLib/Classes/Validate.php b/src/LogLib/Classes/Validate.php index 9e1c134..07f2490 100644 --- a/src/LogLib/Classes/Validate.php +++ b/src/LogLib/Classes/Validate.php @@ -7,102 +7,94 @@ class Validate { /** - * Validates that the level is valid + * Checks if the given level is a valid level type. * - * @param string $level - * @return bool + * @param string $level The level to check. + * @return bool Returns true if the level is valid */ public static function LevelType(string $level): bool { - return in_array($level, LevelType::All); + return in_array($level, LevelType::ALL); } /** - * Checks if the input level matches the current level + * Checks if the given input level is valid for the current level. * - * @param string $input - * @param string $current_level - * @return bool + * @param string $input The input level to check. + * @param string $current_level The current level to compare against. + * @return bool Returns true if the input level is valid for the current level, false otherwise. */ public static function checkLevelType(string $input, string $current_level): bool { - if($input == null) - return false; - if($current_level == null) - return false; - $input = strtolower($input); - if(!Validate::LevelType($input)) + if(!self::LevelType($input)) + { return false; + } $current_level = strtolower($current_level); - if(!Validate::LevelType($current_level)) + if(!self::LevelType($current_level)) + { return false; + } switch($current_level) { - case LevelType::Debug: + case LevelType::DEBUG: $levels = [ - LevelType::Debug, - LevelType::Verbose, - LevelType::Info, - LevelType::Warning, - LevelType::Fatal, - LevelType::Error + LevelType::DEBUG, + LevelType::VERBOSE, + LevelType::INFO, + LevelType::WARNING, + LevelType::FATAL, + LevelType::ERROR ]; - if(in_array($input, $levels)) - return true; - return false; - case LevelType::Verbose: + return in_array($input, $levels, true); + + case LevelType::VERBOSE: $levels = [ - LevelType::Verbose, - LevelType::Info, - LevelType::Warning, - LevelType::Fatal, - LevelType::Error + LevelType::VERBOSE, + LevelType::INFO, + LevelType::WARNING, + LevelType::FATAL, + LevelType::ERROR ]; - if(in_array($input, $levels)) - return true; - return false; - case LevelType::Info: + return in_array($input, $levels, true); + + case LevelType::INFO: $levels = [ - LevelType::Info, - LevelType::Warning, - LevelType::Fatal, - LevelType::Error + LevelType::INFO, + LevelType::WARNING, + LevelType::FATAL, + LevelType::ERROR ]; - if(in_array($input, $levels)) - return true; - return false; - case LevelType::Warning: + return in_array($input, $levels, true); + + case LevelType::WARNING: $levels = [ - LevelType::Warning, - LevelType::Fatal, - LevelType::Error + LevelType::WARNING, + LevelType::FATAL, + LevelType::ERROR ]; - if(in_array($input, $levels)) - return true; - return false; - case LevelType::Error: + return in_array($input, $levels, true); + + case LevelType::ERROR: $levels = [ - LevelType::Fatal, - LevelType::Error + LevelType::FATAL, + LevelType::ERROR ]; - if(in_array($input, $levels)) - return true; - return false; - case LevelType::Fatal: - if($input == LevelType::Fatal) - return true; - return false; + return in_array($input, $levels, true); + + case LevelType::FATAL: + return $input === LevelType::FATAL; default: - case LevelType::Silent: + case LevelType::SILENT: return false; } } diff --git a/src/LogLib/Exceptions/ConfigurationException.php b/src/LogLib/Exceptions/ConfigurationException.php deleted file mode 100644 index 7a829fc..0000000 --- a/src/LogLib/Exceptions/ConfigurationException.php +++ /dev/null @@ -1,21 +0,0 @@ -message = $message; - $this->code = $code; - } - } \ No newline at end of file diff --git a/src/LogLib/Log.php b/src/LogLib/Log.php index 0da1569..f54e4f8 100644 --- a/src/LogLib/Log.php +++ b/src/LogLib/Log.php @@ -17,14 +17,14 @@ class Log { /** - * @var Options[] + * @var Options[]|null */ - private static $Applications; + private static $applications; /** - * @var RuntimeOptions + * @var RuntimeOptions|null */ - private static $RuntimeOptions; + private static $runtime_options; /** * Registers a new application logger @@ -35,9 +35,16 @@ public static function register(Options $options): bool { if(self::isRegistered($options->getApplicationName())) + { return false; + } - self::$Applications[$options->getApplicationName()] = $options; + if(self::$applications === null) + { + self::$applications = []; + } + + self::$applications[$options->getApplicationName()] = $options; return true; } @@ -49,8 +56,15 @@ */ public static function unregister(string $application): void { - if(isset(self::$Applications[$application])) - unset(self::$Applications[$application]); + if(self::$applications === null) + { + return; + } + + if(isset(self::$applications[$application])) + { + unset(self::$applications[$application]); + } } /** @@ -61,7 +75,7 @@ */ private static function isRegistered(string $application): bool { - return isset(self::$Applications[$application]); + return isset(self::$applications[$application]); } /** @@ -71,9 +85,11 @@ public static function getApplication(string $application): Options { if(!self::isRegistered($application)) + { throw new InvalidArgumentException("The application '$application' is not registered"); + } - return self::$Applications[$application]; + return self::$applications[$application]; } /** @@ -87,38 +103,49 @@ self::register(new Options($application_name)); } - return self::$Applications[$application_name]; + return self::$applications[$application_name]; } /** + * Logs a message with a specified application name, level, optional message, and optional throwable. + * * @param string $application_name The name of the application - * @param string $level The level of the event - * @param string|null $message The message of the event + * @param string $level The level type of the log (default is LevelType::INFO) + * @param string|null $message The message of the log event * @param Throwable|null $throwable The exception that was thrown, if any * @return void + * @throws InvalidArgumentException If the provided level type is invalid or a message is null */ - private static function log(string $application_name, string $level=LevelType::Info, ?string $message=null, ?Throwable $throwable=null): void + private static function log(string $application_name, string $level=LevelType::INFO, ?string $message=null, ?Throwable $throwable=null): void { $application = self::getOptions($application_name); - if(!Validate::checkLevelType($level, self::getRuntimeOptions()->getLogLevel())) + if(!Validate::levelType($level)) + { + throw new InvalidArgumentException(sprintf('Invalid level type: %s', $level)); + } + + if(!Validate::checkLevelType($level, self::getRuntimeOptions()->getLoglevel())) + { return; + } - if($message == null) + if($message === null) + { throw new InvalidArgumentException('Message cannot be null'); - if($level == null || !Validate::levelType($level)) - throw new InvalidArgumentException('Invalid logging level'); + } - $event = new Event(); - $event->Level = $level; - $event->Message = $message; - $event->Exception = $throwable; + $event = new Event($message, $level, $throwable); - if($event->getBacktrace() == null) + if($event->getBacktrace() === null) + { $event->setBacktrace(Utilities::getBacktrace()); + } if(self::getRuntimeOptions()->isConsoleOutput()) + { Console::out($application, $event); + } } /** @@ -128,7 +155,7 @@ */ public static function info(string $application_name, string $message): void { - self::log($application_name, LevelType::Info, $message); + self::log($application_name, LevelType::INFO, $message); } /** @@ -138,7 +165,7 @@ */ public static function verbose(string $application_name, string $message): void { - self::log($application_name, LevelType::Verbose, $message); + self::log($application_name, LevelType::VERBOSE, $message); } /** @@ -148,56 +175,62 @@ */ public static function debug(string $application_name, string $message): void { - self::log($application_name, LevelType::Debug, $message); + self::log($application_name, LevelType::DEBUG, $message); } /** - * @param string $application_name The name of the application - * @param string $message The message of the event - * @param Throwable|null $throwable The exception that was thrown, if any + * Logs a warning message. + * + * @param string $application_name The name of the application. + * @param string $message The warning message to log. + * @param Throwable|null $throwable (Optional) The throwable object associated with the warning. * @return void */ public static function warning(string $application_name, string $message, ?Throwable $throwable=null): void { - self::log($application_name, LevelType::Warning, $message, $throwable); + self::log($application_name, LevelType::WARNING, $message, $throwable); } /** - * @param string $application_name The name of the application - * @param string $message The message of the event - * @param Throwable|null $throwable The exception that was thrown, if any + * Logs an error message. + * + * @param string $application_name The name of the application. + * @param string $message The error message. + * @param Throwable|null $throwable The optional throwable object associated with the error. * @return void - */ + **/ public static function error(string $application_name, string $message, ?Throwable $throwable=null): void { - self::log($application_name, LevelType::Error, $message, $throwable); + self::log($application_name, LevelType::ERROR, $message, $throwable); } /** - * @param string $application_name The name of the application - * @param string $message The message of the event - * @param Throwable|null $throwable The exception that was thrown, if any + * Logs a fatal message. + * + * @param string $application_name The name of the application. + * @param string $message The fatal message to log. + * @param Throwable|null $throwable (Optional) The throwable object associated with the fatal message. * @return void */ public static function fatal(string $application_name, string $message, ?Throwable $throwable=null): void { - self::log($application_name, LevelType::Fatal, $message, $throwable); + self::log($application_name, LevelType::FATAL, $message, $throwable); } /** - * Registers LogLib as a exception handler + * Registers an exception handler that logs any uncaught exceptions as errors. * * @return void */ public static function registerExceptionHandler(): void { - set_exception_handler(function(Throwable $throwable) { + set_exception_handler(static function(Throwable $throwable) { self::error('Runtime', $throwable->getMessage(), $throwable); }); } /** - * Unregisters all applications + * Unregisters the currently registered exception handler. * * @return void */ @@ -207,15 +240,18 @@ } /** - * @return RuntimeOptions + * Gets the runtime options. + * + * @return RuntimeOptions The runtime options. */ public static function getRuntimeOptions(): RuntimeOptions { - if(self::$RuntimeOptions == null) + if(self::$runtime_options === null) { - self::$RuntimeOptions = new RuntimeOptions(); + self::$runtime_options = new RuntimeOptions(); } - return self::$RuntimeOptions; + + return self::$runtime_options; } } \ No newline at end of file diff --git a/src/LogLib/Objects/Backtrace.php b/src/LogLib/Objects/Backtrace.php index bc9f38b..cf03a73 100644 --- a/src/LogLib/Objects/Backtrace.php +++ b/src/LogLib/Objects/Backtrace.php @@ -7,56 +7,35 @@ class Backtrace { /** - * The function name of the backtrace - * * @var string|null - * @property_name function */ - private $Function; + private $function; /** - * The line number of the backtrace - * * @var int|null - * @property_name line */ - private $Line; + private $line; /** - * The file name of the backtrace - * * @var string|null - * @property_name file */ - private $File; + private $file; /** - * The class name, if any, of the backtrace - * * @var string|null - * @property_name class */ - private $Class; + private $class; /** - * The current call type. If a method call, "->" is returned. - * If a static method call, "::" is returned. If a function call, - * nothing is returned. - * * @see CallType * @var string|null - * @property_name type */ - private $Type; + private $type; /** - * If inside a function, this lists the functions arguments. If inside - * an included file, this lists the included file name(s). - * * @var array|null - * @property_name args */ - private $Args; + private $args; /** * Public Constructor @@ -66,109 +45,135 @@ public function __construct(?array $backtrace=null) { if($backtrace === null) + { return; + } - $this->Function = $backtrace['function'] ?? null; - $this->Line = $backtrace['line'] ?? null; - $this->File = $backtrace['file'] ?? null; - $this->Class = $backtrace['class'] ?? null; - $this->Type = $backtrace['type'] ?? null; - $this->Args = $backtrace['args'] ?? null; + $this->function = $backtrace['function'] ?? null; + $this->line = $backtrace['line'] ?? null; + $this->file = $backtrace['file'] ?? null; + $this->class = $backtrace['class'] ?? null; + $this->type = $backtrace['type'] ?? null; + $this->args = $backtrace['args'] ?? null; } /** + * Optional. Returns the function name of the backtrace + * * @return string|null */ public function getFunction(): ?string { - return $this->Function; + return $this->function; } /** - * @param string|null $Function + * Sets the function name of the backtrace + * + * @param string|null $function */ - public function setFunction(?string $Function): void + public function setFunction(?string $function): void { - $this->Function = $Function; + $this->function = $function; } /** + * Optional. Returns the line number of the backtrace + * * @return int|null */ public function getLine(): ?int { - return $this->Line; + return $this->line; } /** - * @param int|null $Line + * Sets the line number of the backtrace + * + * @param int|null $line */ - public function setLine(?int $Line): void + public function setLine(?int $line): void { - $this->Line = $Line; + $this->line = $line; } /** + * Optional. Returns the file name of the backtrace + * * @return string|null */ public function getFile(): ?string { - return $this->File; + return $this->file; } /** - * @param string|null $File + * Sets the file name of the backtrace + * + * @param string|null $file */ - public function setFile(?string $File): void + public function setFile(?string $file): void { - $this->File = $File; + $this->file = $file; } /** + * Optional. Returns the class name, if any, of the backtrace + * * @return string|null */ public function getClass(): ?string { - return $this->Class; + return $this->class; } /** - * @param string|null $Class + * Sets the class name, if any, of the backtrace + * + * @param string|null $class */ - public function setClass(?string $Class): void + public function setClass(?string $class): void { - $this->Class = $Class; + $this->class = $class; } /** + * Optional. Returns the current call type. If a method call, "->" is returned. + * * @return string|null */ public function getType(): ?string { - return $this->Type; + return $this->type; } /** - * @param string|null $Type + * Sets the current call type. If a method call, "->" is returned. + * + * @param string|null $type */ - public function setType(?string $Type): void + public function setType(?string $type): void { - $this->Type = $Type; + $this->type = $type; } /** + * Optional. Return the functions arguments or included file name(s) + * * @return array|null */ public function getArgs(): ?array { - return $this->Args; + return $this->args; } /** - * @param array|null $Args + * Sets the function arguments or included file name(s) + * + * @param array|null $args */ - public function setArgs(?array $Args): void + public function setArgs(?array $args): void { - $this->Args = $Args; + $this->args = $args; } } \ No newline at end of file diff --git a/src/LogLib/Objects/Event.php b/src/LogLib/Objects/Event.php index 12530e6..5ca960b 100644 --- a/src/LogLib/Objects/Event.php +++ b/src/LogLib/Objects/Event.php @@ -7,37 +7,76 @@ use LogLib\Abstracts\LevelType; use LogLib\Classes\Utilities; use Throwable; + class Event { /** - * The level of the event - * * @see LevelType * @var string - * @property_name level */ - public $Level; + private $level; /** - * An array of backtraces, if any, that were created when the event was created - * * @var Backtrace[]|null */ - private $Backtrace; + private $backtrace; /** - * The exception that was thrown, if any - * * @var Throwable|null */ - public $Exception; + private $exception; /** - * The message of the event - * * @var string */ - public $Message; + private $message; + + /** + * Event constructor. + * + * @param string $message + * @param int $level + * @param Throwable|null $exception + * @param array|null $backtrace + */ + public function __construct(string $message, int $level, ?Throwable $exception=null, ?array $backtrace=null) + { + $this->message = $message; + $this->level = $level; + $this->exception = $exception; + $this->backtrace = $backtrace; + } + + /** + * Returns the level of the event + * + * @see LevelType + * @return int + */ + public function getLevel(): int + { + return $this->level; + } + + /** + * Returns the message of the event + * + * @return string + */ + public function getMessage(): string + { + return $this->message; + } + + /** + * Optional. Returns the exception to the event + * + * @return Throwable|null + */ + public function getException(): ?Throwable + { + return $this->exception; + } /** * Sets an exception to the event @@ -47,23 +86,27 @@ */ public function setException(Throwable $e): void { - $this->Exception = Utilities::exceptionToArray($e); + $this->exception = Utilities::exceptionToArray($e); } /** + * Returns the backtrace of the event + * * @return array|null */ public function getBacktrace(): ?array { - return $this->Backtrace; + return $this->backtrace; } /** - * @param array|null $Backtrace + * Sets the backtrace of the event + * + * @param array|null $backtrace */ - public function setBacktrace(?array $Backtrace): void + public function setBacktrace(?array $backtrace): void { - $this->Backtrace = $Backtrace; + $this->backtrace = $backtrace; } } \ No newline at end of file diff --git a/src/LogLib/Objects/Options.php b/src/LogLib/Objects/Options.php index 3e20eae..7774c29 100644 --- a/src/LogLib/Objects/Options.php +++ b/src/LogLib/Objects/Options.php @@ -8,19 +8,16 @@ class Options { /** - * The name of the application - * * @var string - * @property_name application_name */ - private $ApplicationName; + private $application_name; /** * Options constructor. */ public function __construct(string $application_name) { - $this->ApplicationName = $application_name; + $this->application_name = $application_name; } /** @@ -30,7 +27,7 @@ */ public function getApplicationName(): string { - return $this->ApplicationName; + return $this->application_name; } } \ No newline at end of file diff --git a/src/LogLib/Objects/RuntimeOptions.php b/src/LogLib/Objects/RuntimeOptions.php index 7f6fe4a..c1051b8 100644 --- a/src/LogLib/Objects/RuntimeOptions.php +++ b/src/LogLib/Objects/RuntimeOptions.php @@ -4,7 +4,6 @@ namespace LogLib\Objects; - use InvalidArgumentException; use LogLib\Abstracts\LevelType; use LogLib\Classes\Utilities; @@ -16,7 +15,7 @@ * @var bool * @property_name console_output */ - private $ConsoleOutput; + private $console_output; /** * Indicates if ANSI colors should be used in the console output @@ -24,7 +23,7 @@ * @var bool * @property_name display_ansi */ - private $DisplayAnsi; + private $display_ansi; /** * Indicates if LogLib should handle uncaught exceptions @@ -32,7 +31,7 @@ * @var bool * @property_name handle_exceptions */ - private $HandleExceptions; + private $handle_exceptions; /** * The current log level @@ -40,17 +39,17 @@ * @var int * @see LevelType */ - private $LogLevel; + private $log_level; /** * Public Constructor */ public function __construct() { - $this->ConsoleOutput = Utilities::runningInCli(); - $this->DisplayAnsi = Utilities::getDisplayAnsi(); - $this->HandleExceptions = true; - $this->LogLevel = Utilities::getLogLevel(); + $this->console_output = Utilities::runningInCli(); + $this->display_ansi = Utilities::getDisplayAnsi(); + $this->log_level = Utilities::getLogLevel(); + $this->handle_exceptions = true; } /** @@ -58,62 +57,62 @@ */ public function isConsoleOutput(): bool { - return $this->ConsoleOutput; + return $this->console_output; } /** - * @param bool $ConsoleOutput + * @param bool $console_output */ - public function setConsoleOutput(bool $ConsoleOutput): void + public function setConsoleOutput(bool $console_output): void { - $this->ConsoleOutput = $ConsoleOutput; + $this->console_output = $console_output; } /** * @return bool */ - public function isDisplayAnsi(): bool + public function displayAnsi(): bool { - return $this->DisplayAnsi; + return $this->display_ansi; } /** - * @param bool $DisplayAnsi + * @param bool $display_ansi */ - public function setDisplayAnsi(bool $DisplayAnsi): void + public function setDisplayAnsi(bool $display_ansi): void { - $this->DisplayAnsi = $DisplayAnsi; + $this->display_ansi = $display_ansi; } /** * @return bool */ - public function isHandleExceptions(): bool + public function handleExceptions(): bool { - return $this->HandleExceptions; + return $this->handle_exceptions; } /** - * @param bool $HandleExceptions + * @param bool $handle_exceptions */ - public function setHandleExceptions(bool $HandleExceptions): void + public function setHandleExceptions(bool $handle_exceptions): void { - $this->HandleExceptions = $HandleExceptions; + $this->handle_exceptions = $handle_exceptions; } /** * @return int */ - public function getLogLevel(): int + public function getLoglevel(): int { - return $this->LogLevel; + return $this->log_level; } /** - * @param int $LogLevel + * @param int $log_level */ - public function setLogLevel(int $LogLevel): void + public function setLoglevel(int $log_level): void { - $this->LogLevel = $LogLevel; + $this->log_level = $log_level; } } \ No newline at end of file