Compare commits

..

No commits in common. "master" and "1.2.0-RC5" have entirely different histories.

57 changed files with 559 additions and 695 deletions

View File

@ -1,36 +0,0 @@
kind: pipeline
type: docker
name: test
steps:
- name: composer
image: composer:latest
commands:
- composer install
- name: php74test
image: registry.i15.nl/i15/fuzephp:7.4-alpine
commands:
- docker-php-ext-enable xdebug
- vendor/bin/phpunit -c test/phpunit.xml
- name: php80test
image: registry.i15.nl/i15/fuzephp:8.0-alpine
commands:
- docker-php-ext-enable xdebug
- vendor/bin/phpunit -c test/phpunit.xml
- name: php81test
image: registry.i15.nl/i15/fuzephp:8.1-alpine
commands:
- docker-php-ext-enable xdebug
- vendor/bin/phpunit -c test/phpunit.xml
- name: coverage
image: registry.i15.nl/i15/fuzephp:8.0-alpine
commands:
- docker-php-ext-enable xdebug
- vendor/bin/phpunit -c test/phpunit.xml --coverage-text
image_pull_secrets:
- dockerconfig

1
.gitattributes vendored
View File

@ -3,4 +3,3 @@
.gitlab-ci.yml export-ignore
.travis.yml export-ignore
test/ export-ignore
docs/ export-ignore

82
.gitlab-ci.yml Normal file
View File

@ -0,0 +1,82 @@
before_script:
# Install dependencies
- set -xe
- apt-get update -yqq
- apt-get install git zip unzip -yqq
stages:
- build
- test
- deploy
build:composer:
image: php:7.2
stage: build
script:
- curl -sS https://getcomposer.org/installer | php
- php composer.phar install
cache:
key: "$CI_BUILD_REF_$CI_BUILD_REF_NAME"
paths:
- vendor/
test:7.1:
stage: test
image: php:7.1
script:
- vendor/bin/phpunit -c test/phpunit.xml
cache:
key: "$CI_BUILD_REF_$CI_BUILD_REF_NAME"
paths:
- vendor
test:7.2:
stage: test
image: php:7.2
script:
- vendor/bin/phpunit -c test/phpunit.xml
cache:
key: "$CI_BUILD_REF_$CI_BUILD_REF_NAME"
paths:
- vendor/
test:7.3:
stage: test
image: php:7.3
script:
- vendor/bin/phpunit -c test/phpunit.xml
cache:
key: "$CI_BUILD_REF_$CI_BUILD_REF_NAME"
paths:
- vendor/
test:coverage:
stage: test
image: php:7.2
script:
- pecl install xdebug
- docker-php-ext-enable xdebug
- vendor/bin/phpunit -c test/phpunit.xml --coverage-text
cache:
key: "$CI_BUILD_REF_$CI_BUILD_REF_NAME"
paths:
- vendor/
release:
stage: deploy
image: php:7.2
only:
- master
script:
- pecl install xdebug
- docker-php-ext-enable xdebug
- vendor/bin/phpunit -c test/phpunit.xml --coverage-text
artifacts:
name: "${CI_BUILD_NAME}_${CI_BUILD_REF_NAME}"
paths:
- build/
expire_in: 3 weeks
cache:
key: "$CI_BUILD_REF_$CI_BUILD_REF_NAME"
paths:
- vendor/

12
.travis.yml Normal file
View File

@ -0,0 +1,12 @@
language: php
php:
- 7.1
- 7.2
- 7.3
script:
- php vendor/bin/phpunit -v -c test/phpunit.xml --coverage-text
before_script:
- composer install

View File

@ -10,7 +10,7 @@ https://techfuze.net/fuzeworks
Summary
-------
FuzeWorks is a flexible PHP Framework made for the requirements of today's web.
FuzeWorks is a flexible PHP Framework made for the requirements of todays web.
For a summary of features, list of requirements, and installation instructions,
please see the documentation in the ./doc/ folder or at http://techfuze.net/fuzeworks

View File

@ -1,20 +1,25 @@
{
"name": "fuzeworks/core",
"description": "FuzeWorks Framework Core",
"homepage": "https://i15.nl/fuzeworks",
"homepage": "https://techfuze.net/fuzeworks",
"license": ["MIT"],
"authors": [
{
"name": "Abel Hoogeveen",
"homepage": "https://i15.nl"
"name": "TechFuze",
"homepage": "https://techfuze.net"
},
{
"name": "FuzeWorks Community",
"homepage": "https://techfuze.net/fuzeworks/contributors"
}
],
"require": {
"php": ">=7.4.0"
"php": ">=7.1.0",
"psr/log": "1.1.0"
},
"require-dev": {
"phpunit/phpunit": "^9",
"mikey179/vfsstream": "~1.6.0"
"phpunit/phpunit": "^7",
"mikey179/vfsstream": "1.1.*"
},
"autoload": {
"psr-4": {

View File

@ -1,27 +0,0 @@
FuzeWorks boot process
1.
1.1 Temp/Log directory set
1.2 Debug parameters set
2.
2.1 Define ENVIRONMENT
2.2 Core::init()
2.2.1 CWD Set
2.2.2 CoreDir set
2.2.3 Constants defined
2.2.4 shutdown/error/exception handlers set
2.3 new Factory()
2.3.1 new Config, Logger, Events, Libraries, Helpers, Plugins
3.
3.1 Load Components
3.1.1 setInstance of component
3.1.2 run onCreateContainer()
3.2 Add directories by category
3.3 each component init()
3.4 deferComponentClass invoke
4.
4.1 Factory::initFactory()
4.1.1 enable/disable Events
4.1.2 Plugins::loadHeadersFromPluginPaths()
4.1.3 coreStartEvent()
5. Return container

View File

@ -31,7 +31,7 @@
* @link http://techfuze.net/fuzeworks
* @since Version 1.2.0
*
* @version Version 1.3.0
* @version Version 1.2.0
*/
namespace FuzeWorks;
@ -45,7 +45,7 @@ trait ComponentPathsTrait
*
* @var array $componentPaths
*/
protected array $componentPaths = [];
protected $componentPaths = [];
/**
* Set the directories. Automatically gets invoked if componentPaths are added by FuzeWorks\Configurator.
@ -63,7 +63,7 @@ trait ComponentPathsTrait
* @param string $componentPath
* @param int $priority
*/
public function addComponentPath(string $componentPath, int $priority = Priority::NORMAL)
public function addComponentPath($componentPath, $priority = Priority::NORMAL)
{
if (!isset($this->componentPaths[$priority]))
$this->componentPaths[$priority] = [];
@ -78,7 +78,7 @@ trait ComponentPathsTrait
* @param string $componentPath
* @param int $priority
*/
public function removeComponentPath(string $componentPath, int $priority = Priority::NORMAL)
public function removeComponentPath($componentPath, $priority = Priority::NORMAL)
{
if (!isset($this->componentPaths[$priority]))
return;
@ -93,8 +93,8 @@ trait ComponentPathsTrait
* @param int $priority
* @return array of paths where objects for this component can be found
*/
public function getComponentPaths(int $priority = Priority::NORMAL): array
public function getComponentPaths($priority = Priority::NORMAL): array
{
return $this->componentPaths[$priority] ?? [];
return (isset($this->componentPaths[$priority]) ? $this->componentPaths[$priority] : []);
}
}

View File

@ -31,7 +31,7 @@
* @link http://techfuze.net/fuzeworks
* @since Version 0.0.1
*
* @version Version 1.3.0
* @version Version 1.2.0
*/
namespace FuzeWorks;
@ -52,28 +52,24 @@ class Config
{
use ComponentPathsTrait;
public function __construct() {
$this->addComponentPath(Core::$coreDir . DS . 'Config', Priority::LOWEST);
}
/**
* Array where all config files are saved while FuzeWorks runs
*
* @var array Array of all loaded config file ORM's
*/
protected array $cfg = [];
protected $cfg = [];
/**
* Array of config values that will be overridden
*
* @var array of config values
*/
public static array $configOverrides = [];
public static $configOverrides = [];
/**
* Retrieve a config file object
*
* @param string $configName Name of the config file. E.g. 'main'
* @param string $configName Name of the config file. Eg. 'main'
* @param array $configPaths Optional array of where to look for the config files
* @return ConfigORM of the config file. Allows for easy reading and editing of the file
* @throws ConfigException
@ -96,7 +92,7 @@ class Config
else
$paths = $this->componentPaths;
// Otherwise, try and load a new one
// Otherwise try and load a new one
$this->cfg[$configName] = $this->loadConfigFile($configName, $paths);
return $this->cfg[$configName];
}
@ -132,7 +128,7 @@ class Config
/**
* Determine whether the file exists and, if so, load the ConfigORM
*
* @param string $configName Name of the config file. E.g. 'main'
* @param string $configName Name of the config file. Eg. 'main'
* @param array $configPaths Required array of where to look for the config files
* @return ConfigORM of the config file. Allows for easy reading and editing of the file
* @throws ConfigException
@ -154,7 +150,6 @@ class Config
return new ConfigORM();
// Cycle through all priorities if they exist
$configORM = new ConfigORM();
for ($i=Priority::getHighestPriority(); $i<=Priority::getLowestPriority(); $i++)
{
if (!isset($event->configPaths[$i]))
@ -166,12 +161,9 @@ class Config
// If file exists, load it and break the loop
$file = $configPath . DS . 'config.'.strtolower($event->configName).'.php';
if (file_exists($file))
$configORM->addFile($i, $file);
}
}
// And initialize the ORM
$configORM->init();
{
// Load object
$configORM = (new ConfigORM())->load($file);
// Override config values if they exist
if (isset(self::$configOverrides[$event->configName]))
@ -180,8 +172,29 @@ class Config
$configORM->{$configKey} = $configValue;
}
if ($configORM->loaded)
// Return object
return $configORM;
}
}
}
// Try fallback
$file = Core::$coreDir . DS . 'Config' . DS . 'config.' . $event->configName . '.php';
if (file_exists($file))
{
// Load object
$configORM = (new ConfigORM())->load($file);
// Override config values if they exist
if (isset(self::$configOverrides[$event->configName]))
{
foreach (self::$configOverrides[$event->configName] as $configKey => $configValue)
$configORM->{$configKey} = $configValue;
}
// Return object
return $configORM;
}
throw new ConfigException("Could not load config. File $event->configName not found", 1);
}

View File

@ -31,12 +31,11 @@
* @link http://techfuze.net/fuzeworks
* @since Version 0.0.1
*
* @version Version 1.3.0
* @version Version 1.2.0
*/
namespace FuzeWorks\ConfigORM;
use FuzeWorks\Exception\ConfigException;
use FuzeWorks\Priority;
/**
* ORM class for config files in PHP files.
@ -49,61 +48,37 @@ use FuzeWorks\Priority;
class ConfigORM extends ConfigORMAbstract
{
/**
* The path to the highest priority filename.
* The current filename.
*
* @var string filename
*/
protected string $file;
private $file;
/**
* Files the ConfigORM is built on
* Load the ConfigORM file.
*
* @var array files
* @param string $file
* @return ConfigORM
* @throws ConfigException
*/
protected array $files = [];
/**
* Whether the ConfigORM is loaded or not.
*
* @var bool
*/
public bool $loaded = false;
public function addFile(int $priority, string $file)
public function load(string $file = ''): ConfigORM
{
if (!isset($this->files[$priority]))
$this->files[$priority] = [];
$this->files[$priority][] = $file;
if (empty($file))
{
throw new ConfigException('Could not load config file. No file provided', 1);
}
public function init()
elseif (file_exists($file))
{
// Set cfg
$this->cfg = [];
for ($i = Priority::getLowestPriority(); $i >= Priority::getHighestPriority(); $i--) {
// If priority does not exist for this file, skip it
if (!isset($this->files[$i]))
continue;
// Pass over each file in this priority
foreach ($this->files[$i] as $file) {
// Read the contents
$contents = (array) include $file;
// Merge them with the config as we know it
$this->cfg = array_replace_recursive($this->cfg, $contents);
// And save the last file that we found (with the highest priority)
$this->file = $file;
$this->loaded = true;
$this->cfg = (array) include $file;
$this->originalCfg = $this->cfg;
}
else
{
throw new ConfigException('Could not load config file. Config file does not exist', 1);
}
// When done, save originalCfg
$this->originalCfg = $this->cfg;
return $this;
}
/**
@ -113,10 +88,6 @@ class ConfigORM extends ConfigORMAbstract
*/
public function commit(): bool
{
// If config has a lock file, don't write
if (isset($this->cfg['lock']))
throw new ConfigException("Could not write config file. $this->file is locked with the 'lock' key.");
// Write the changes
if (is_writable($this->file)) {
$config = var_export($this->cfg, true);

View File

@ -31,7 +31,7 @@
* @link http://techfuze.net/fuzeworks
* @since Version 0.0.1
*
* @version Version 1.3.0
* @version Version 1.2.0
*/
namespace FuzeWorks\ConfigORM;
@ -53,14 +53,14 @@ abstract class ConfigORMAbstract implements Iterator
*
* @var array Config file
*/
protected array $originalCfg = [];
protected $originalCfg = [];
/**
* The current state of a config file.
*
* @var array Config file
*/
protected array $cfg = [];
protected $cfg = [];
/**
* Revert to the original conditions of the config file.
@ -98,7 +98,7 @@ abstract class ConfigORMAbstract implements Iterator
* @return bool true on isset, false on not
* @codeCoverageIgnore
*/
public function __isset(string $name)
public function __isset($name)
{
return isset($this->cfg[$name]);
}
@ -110,7 +110,7 @@ abstract class ConfigORMAbstract implements Iterator
* @return mixed Value of the requested entry
* @codeCoverageIgnore
*/
public function __get(string $name)
public function __get($name)
{
return $this->cfg[$name];
}
@ -122,7 +122,7 @@ abstract class ConfigORMAbstract implements Iterator
* @return mixed Value of the requested entry
* @codeCoverageIgnore
*/
public function get(string $name)
public function get($name)
{
return $this->cfg[$name];
}
@ -134,7 +134,7 @@ abstract class ConfigORMAbstract implements Iterator
* @param mixed $value Value of the entry
* @codeCoverageIgnore
*/
public function __set(string $name, $value)
public function __set($name, $value)
{
$this->cfg[$name] = $value;
}
@ -146,7 +146,7 @@ abstract class ConfigORMAbstract implements Iterator
* @param mixed $value Value of the entry
* @codeCoverageIgnore
*/
public function set(string $name, $value)
public function set($name, $value)
{
$this->cfg[$name] = $value;
}
@ -202,7 +202,7 @@ abstract class ConfigORMAbstract implements Iterator
* Iterator method.
* @codeCoverageIgnore
*/
public function valid(): bool
public function valid()
{
return key($this->cfg) !== null;
}
@ -212,7 +212,7 @@ abstract class ConfigORMAbstract implements Iterator
*
* @return array Config file
*/
public function toArray(): array
public function toArray()
{
return $this->cfg;
}

View File

@ -31,11 +31,10 @@
* @link http://techfuze.net/fuzeworks
* @since Version 0.0.1
*
* @version Version 1.3.0
* @version Version 1.2.0
*/
namespace FuzeWorks;
use Exception;
use FuzeWorks\Exception\ConfiguratorException;
use FuzeWorks\Exception\InvalidArgumentException;
@ -59,14 +58,14 @@ class Configurator
*
* @var array
*/
protected array $parameters = ['debugEnabled' => false];
protected $parameters = ['debugEnabled' => false];
/**
* Components that have been added to FuzeWorks
*
* @var iComponent[]
*/
protected array $components = [];
protected $components = [];
/**
* Directories that will be passed to FuzeWorks components.
@ -75,14 +74,14 @@ class Configurator
*
* @var array of directories
*/
protected array $directories = [];
protected $directories = [];
/**
* Array of ComponentClass methods to be invoked once ComponentClass is loaded
*
* @var DeferredComponentClass[]
*/
protected array $deferredComponentClassMethods = [];
protected $deferredComponentClassMethods = [];
const COOKIE_SECRET = 'fuzeworks-debug';
@ -129,7 +128,7 @@ class Configurator
* @return $this
* @throws InvalidArgumentException
*/
public function addDirectory(string $directory, string $category, int $priority = Priority::NORMAL): Configurator
public function addDirectory(string $directory, string $category, $priority = Priority::NORMAL): Configurator
{
if (!file_exists($directory))
throw new InvalidArgumentException("Could not add directory. Directory does not exist.");
@ -173,7 +172,7 @@ class Configurator
* @param mixed $parameters,... Parameters for the method to be invoked
* @return DeferredComponentClass
*/
public function deferComponentClassMethod(string $componentClass, string $method, callable $callable = null): DeferredComponentClass
public function deferComponentClassMethod(string $componentClass, string $method, callable $callable = null)
{
// Retrieve arguments
$arguments = (func_num_args() > 3 ? array_slice(func_get_args(), 3) : []);
@ -196,7 +195,7 @@ class Configurator
* @return DeferredComponentClass
* @codeCoverageIgnore
*/
public function call(string $componentClass, string $method, callable $callable = null): DeferredComponentClass
public function call(string $componentClass, string $method, callable $callable = null)
{
return call_user_func_array([$this, 'deferComponentClassMethod'], func_get_args());
}
@ -271,7 +270,8 @@ class Configurator
public function enableDebugMode(): Configurator
{
$this->parameters['debugEnabled'] = true;
$this->parameters['debugMatch'] = $this->parameters['debugMatch'] ?? true;
$this->parameters['debugMatch'] = (isset($this->parameters['debugMatch']) ? $this->parameters['debugMatch'] : true);
return $this;
}
@ -301,11 +301,13 @@ class Configurator
return $this;
}
// Otherwise, we run the regular detectDebugMode from Tracy
// Otherwise we run the regular detectDebugMode from Tracy
$list = is_string($address)
? preg_split('#[,\s]+#', $address)
: (array) $address;
$addr = $_SERVER['REMOTE_ADDR'] ?? php_uname('n');
$addr = isset($_SERVER['REMOTE_ADDR'])
? $_SERVER['REMOTE_ADDR']
: php_uname('n');
$secret = isset($_COOKIE[self::COOKIE_SECRET]) && is_string($_COOKIE[self::COOKIE_SECRET])
? $_COOKIE[self::COOKIE_SECRET]
: NULL;
@ -334,7 +336,7 @@ class Configurator
* When issue #101 is completed, this should be resolved.
*
* @return Factory
* @throws Exception
* @throws \Exception
*/
public function createContainer(): Factory
{
@ -343,7 +345,7 @@ class Configurator
Core::$logDir = $this->parameters['logDir'];
// Then prepare the debugger
$debug = $this->parameters['debugEnabled'] && $this->parameters['debugMatch'];
$debug = ($this->parameters['debugEnabled'] && $this->parameters['debugMatch'] ? true : false);
// Then load the framework
$container = Core::init();
@ -404,10 +406,6 @@ class Configurator
$container->{$component}->setDirectories($priorityArray);
}
// And add the fallback directory
$container->config->addComponentPath(Core::$coreDir . DS . 'Config', Priority::LOWEST);
// Initialize and return the container
$container->initFactory();
Logger::stopLevel();
return $container;

View File

@ -31,12 +31,11 @@
* @link http://techfuze.net/fuzeworks
* @since Version 0.0.1
*
* @version Version 1.3.0
* @version Version 1.2.0
*/
namespace FuzeWorks;
use Exception;
use FuzeWorks\Exception\CoreException;
use FuzeWorks\Exception\EventException;
@ -56,7 +55,7 @@ class Core
*
* @var string Framework version
*/
public static string $version = '1.2.0';
public static $version = '1.2.0';
/**
* Working directory of the Framework.
@ -65,39 +64,39 @@ class Core
*
* @var string
*/
public static string $cwd;
public static $cwd;
public static string $coreDir;
public static $coreDir;
public static string $tempDir;
public static $tempDir;
public static string $logDir;
public static $logDir;
/**
* Array of exception handlers, sorted by priority
*
* @var array
*/
protected static array $exceptionHandlers = [];
protected static $exceptionHandlers = [];
/**
* Array of error handlers, sorted by priority
*
* @var array
*/
protected static array $errorHandlers = [];
protected static $errorHandlers = [];
/**
* Array of all classMaps which can be autoloaded.
*
* @var array
*/
protected static array $autoloadMap = [];
protected static $autoloadMap = [];
/**
* Initializes the core.
*
* @throws Exception
* @throws \Exception
*/
public static function init(): Factory
{
@ -149,26 +148,6 @@ class Core
Logger::stopLevel();
}
/**
* Retrieve a variable name from the php environment, while also providing a fallback variable
*
* @param string $varName
* @param string|null $default
* @return array|string|null
*/
public static function getEnv(string $varName, string $default = null)
{
// First retrieve the environment variable
$var = getenv($varName);
// If the environment variable doesn't exist, use the default one
if ($var === FALSE)
return $default;
// Otherwise, return the variable itself
return $var;
}
/**
* Checks whether the current running version of PHP is equal to the input string.
*

View File

@ -31,7 +31,7 @@
* @link http://techfuze.net/fuzeworks
* @since Version 0.0.1
*
* @version Version 1.3.0
* @version Version 1.2.0
*/
namespace FuzeWorks;
@ -42,17 +42,17 @@ class DeferredComponentClass
/**
* @var string Name of the class to be invoked
*/
public string $componentClass;
public $componentClass;
/**
* @var string name of the method to be invoked
*/
public string $method;
public $method;
/**
* @var array arguments to invoke the method with
*/
public array $arguments = [];
public $arguments = [];
/**
* @var mixed return from the invoked method
@ -62,7 +62,7 @@ class DeferredComponentClass
/**
* @var bool Whether the method has been invoked
*/
protected bool $invoked = false;
protected $invoked = false;
/**
* @var callable A callback to call when method has been invoked.

View File

@ -31,7 +31,7 @@
* @link http://techfuze.net/fuzeworks
* @since Version 0.0.1
*
* @version Version 1.3.0
* @version Version 1.2.0
*/
namespace FuzeWorks;
@ -46,7 +46,7 @@ namespace FuzeWorks;
*/
class Event
{
private bool $cancelled = false;
private $cancelled = false;
/**
* @return bool True if the event is cancelled, false if the event is not cancelled
@ -59,7 +59,7 @@ class Event
/**
* @param bool $cancelled True if the event is cancelled, false if the event is not cancelled
*/
public function setCancelled(bool $cancelled)
public function setCancelled($cancelled)
{
if ($cancelled == true) {
$this->cancelled = true;

View File

@ -31,7 +31,7 @@
* @link http://techfuze.net/fuzeworks
* @since Version 0.0.1
*
* @version Version 1.3.0
* @version Version 1.2.0
*/
namespace FuzeWorks\Event;
@ -54,14 +54,14 @@ class ConfigGetEvent extends Event
*
* @var string
*/
public string $configName;
public $configName;
/**
* The directories the config might be found in
*
* @var array
*/
public array $configPaths;
public $configPaths;
public function init(string $configName, array $configPaths)

View File

@ -31,7 +31,7 @@
* @link http://techfuze.net/fuzeworks
* @since Version 1.2.0
*
* @version Version 1.3.0
* @version Version 1.2.0
*/
namespace FuzeWorks\Event;
@ -51,7 +51,7 @@ class HaltExecutionEvent extends Event
/**
* @var array Log
*/
public array $log;
public $log;
public function init(array $log)
{

View File

@ -31,7 +31,7 @@
* @link http://techfuze.net/fuzeworks
* @since Version 0.0.1
*
* @version Version 1.3.0
* @version Version 1.2.0
*/
namespace FuzeWorks\Event;
@ -54,14 +54,14 @@ class HelperLoadEvent extends Event
*
* @var string
*/
public string $helperName;
public $helperName;
/**
* The directory of the helper that gets loaded
*
* @var array
*/
public array $helperPaths;
public $helperPaths;
public function init(string $helperName, array $helperPaths)

View File

@ -31,7 +31,7 @@
* @link http://techfuze.net/fuzeworks
* @since Version 1.1.4
*
* @version Version 1.3.0
* @version Version 1.2.0
*/
namespace FuzeWorks\Event;
@ -51,14 +51,14 @@ class PluginGetEvent extends Event
*
* @var string
*/
public string $pluginName;
public $pluginName;
/**
* Potential plugin to return instead. If set, the plugins class will return this object
*
* @var object|null
* @var object
*/
public ?object $plugin = null;
public $plugin = null;
public function init($pluginName)
{
@ -70,7 +70,7 @@ class PluginGetEvent extends Event
*
* @param object $plugin
*/
public function setPlugin(object $plugin)
public function setPlugin($plugin)
{
$this->plugin = $plugin;
}
@ -80,7 +80,7 @@ class PluginGetEvent extends Event
*
* @return object|null $plugin
*/
public function getPlugin(): ?object
public function getPlugin()
{
return $this->plugin;
}

View File

@ -31,7 +31,7 @@
* @link http://techfuze.net/fuzeworks
* @since Version 0.0.1
*
* @version Version 1.3.0
* @version Version 1.2.0
*/
namespace FuzeWorks;
@ -66,7 +66,7 @@ class Events
*
* @var array
*/
public static array $listeners = array();
public static $listeners = array();
/**
* Whether the event system is enabled or not.
@ -129,7 +129,7 @@ class Events
*
* @throws EventException
*/
public static function removeListener(callable $callback, string $eventName, int $priority = Priority::NORMAL)
public static function removeListener(callable $callback, string $eventName, $priority = Priority::NORMAL)
{
if (Priority::getPriority($priority) == false) {
throw new EventException('Unknown priority '.$priority);
@ -169,7 +169,7 @@ class Events
$eventName = end($eventName);
$event = $input;
}
// Otherwise, try to load an event based on the input string
// Otherwise try to load an event based on the input string
elseif (is_string($input))
{
$eventClass = ucfirst($input);
@ -224,15 +224,15 @@ class Events
//Check for listeners in this priority
if (isset(self::$listeners[$eventName][$priority])) {
$listeners = self::$listeners[$eventName][$priority];
Logger::newLevel('Listeners with priority '.Priority::getPriority($priority));
Logger::newLevel('Found listeners with priority '.Priority::getPriority($priority));
//Fire the event to each listener
foreach ($listeners as $callbackArray) {
// @codeCoverageIgnoreStart
$callback = $callbackArray[0];
if (is_array($callback)) {
Logger::newLevel('Firing '.get_class($callback[0]).'->'.$callback[1]);
} elseif (is_callable($callback)) {
if (is_callable($callback)) {
Logger::newLevel('Firing function');
} elseif (!is_string($callback[0])) {
Logger::newLevel('Firing '.get_class($callback[0]).'->'.$callback[1]);
} else {
Logger::newLevel('Firing '.implode('->', $callback));
}

View File

@ -31,7 +31,7 @@
* @link http://techfuze.net/fuzeworks
* @since Version 0.0.1
*
* @version Version 1.3.0
* @version Version 1.2.0
*/
namespace FuzeWorks;
@ -67,55 +67,56 @@ class Factory
/**
* The Factory instance that is shared by default when calling Factory::getInstance();
*
* @var Factory|null Default shared instance
* @var Factory Default shared instance
*/
private static ?Factory $sharedFactoryInstance = null;
private static $sharedFactoryInstance;
/**
* Whether the Factory has been initialized or not
*
* @var bool $initialized
*/
private bool $initialized = false;
private $initialized = false;
/**
* Config Object
* @var Config
*/
public Config $config;
public $config;
/**
* Logger Object
* @var Logger
*/
public Logger $logger;
public $logger;
/**
* Events Object
* @var Events
*/
public Events $events;
public $events;
/**
* Libraries Object
* @var Libraries
*/
public Libraries $libraries;
public $libraries;
/**
* Helpers Object
* @var Helpers
*/
public Helpers $helpers;
public $helpers;
/**
* Plugins Object
* @var Plugins
*/
public Plugins $plugins;
public $plugins;
/**
* Factory instance constructor. Should only really be called once
* @throws ConfigException
* @throws FactoryException
*/
public function __construct()
@ -139,8 +140,11 @@ class Factory
// Otherwise, copy the existing instances
$x = self::getInstance();
foreach ($x as $key => $value)
{
$this->{$key} = $value;
}
return;
}
/**
@ -169,9 +173,6 @@ class Factory
// Initialize all components
foreach ($this as $component)
{
if (!is_object($component))
continue;
if (method_exists($component, 'init'))
$component->init();
}
@ -222,7 +223,7 @@ class Factory
* @return Factory Instance
* @throws FactoryException
*/
public function newInstance(string $className, string $namespace = 'FuzeWorks\\'): self
public function newInstance($className, $namespace = 'FuzeWorks\\'): self
{
// Determine the class to load
$instanceName = strtolower($className);
@ -284,7 +285,7 @@ class Factory
* @param mixed $object Object to replace the class with
* @return Factory Instance
*/
public function setInstance(string $objectName, $object): self
public function setInstance($objectName, $object): self
{
// Determine the instance name
$instanceName = strtolower($objectName);
@ -304,7 +305,7 @@ class Factory
* @return Factory Factory Instance
* @throws FactoryException
*/
public function removeInstance(string $className): self
public function removeInstance($className): self
{
// Determine the instance name
$instanceName = strtolower($className);
@ -327,7 +328,7 @@ class Factory
* @param $componentName
* @return bool
*/
public function instanceIsset($componentName): bool
public function instanceIsset($componentName)
{
return isset($this->{$componentName});
}

View File

@ -31,7 +31,7 @@
* @link http://techfuze.net/fuzeworks
* @since Version 0.0.1
*
* @version Version 1.3.0
* @version Version 1.2.0
*/
namespace FuzeWorks;
@ -49,7 +49,7 @@ use FuzeWorks\Exception\HelperException;
* Text Helpers perform various text formatting routines, Cookie Helpers set and read cookies,
* File Helpers help you deal with files, etc.
*
* Unlike most other systems in FuzeWorks, Helpers are not written in an Object-Oriented format.
* Unlike most other systems in FuzeWorks, Helpers are not written in an Object Oriented format.
* They are simple, procedural functions. Each helper function performs one specific task, with no dependence on other functions.
*
* FuzeWorks does not load Helper Files by default, so the first step in using a Helper is to load it. Once loaded,
@ -67,7 +67,7 @@ class Helpers
*
* @var array Array of loaded helperNames
*/
protected array $helpers = [];
protected $helpers = [];
/**
* Load a helper.
@ -145,14 +145,14 @@ class Helpers
/**
* Alias for load
* @see load() for more details
*
* @param string $helperName Name of the helper
* @param array $helperPaths
* @return bool Whether the helper was successfully loaded (true if yes)
* @throws HelperException
*@see load() for more details
*
*/
public function get(string $helperName, array $helperPaths = []): bool
public function get($helperName, array $helperPaths = []): bool
{
return $this->load($helperName, $helperPaths);
}

View File

@ -31,7 +31,7 @@
* @link http://techfuze.net/fuzeworks
* @since Version 0.0.1
*
* @version Version 1.3.0
* @version Version 1.2.0
*/
namespace FuzeWorks;
@ -40,6 +40,7 @@ use FuzeWorks\Exception\ConfigException;
use FuzeWorks\Exception\CoreException;
use FuzeWorks\Exception\LibraryException;
use ReflectionClass;
use ReflectionException;
class Libraries
{
@ -50,14 +51,14 @@ class Libraries
*
* @var array Library objects
*/
protected array $libraryObjects = [];
protected $libraryObjects = [];
/**
* Array of libraries with their classnames, so they can be easily loaded
*
* @var array Library classes
*/
protected array $libraryClasses = [];
protected $libraryClasses = [];
/**
* FuzeWorks Factory object. For internal use.
@ -82,7 +83,7 @@ class Libraries
* @param string $libraryName
* @param object $libraryObject
*/
public function addLibraryObject(string $libraryName, object $libraryObject)
public function addLibraryObject(string $libraryName, $libraryObject)
{
$this->libraryObjects[strtolower($libraryName)] = $libraryObject;
}
@ -96,7 +97,7 @@ class Libraries
*/
public function addLibraryClass(string $libraryName, string $libraryClass)
{
if (!class_exists($libraryClass, true))
if (!class_exists($libraryClass, false))
throw new LibraryException("Could not add library class. '" . $libraryClass . "' could not be loaded.", 1);
$this->libraryClasses[strtolower($libraryName)] = $libraryClass;
@ -212,6 +213,8 @@ class Libraries
$prefix = $classObject->getClassesPrefix();
if (!is_null($filePath) && !is_null($prefix))
Core::addAutoloadMap($prefix, $filePath);
} catch (ReflectionException $e) {
throw new LibraryException("Could not initiate library. ReflectionClass threw exception.");
} catch (CoreException $e) {
throw new LibraryException("Could not initiate library. Failed to add to autoloader.");
}

View File

@ -31,15 +31,14 @@
* @link http://techfuze.net/fuzeworks
* @since Version 0.0.1
*
* @version Version 1.3.0
* @version Version 1.2.0
*/
namespace FuzeWorks;
use Exception;
use FuzeWorks\Exception\ConfigException;
use FuzeWorks\Exception\EventException;
use Throwable;
use FuzeWorks\Exception\Exception;
/**
* Logger Class.
@ -58,21 +57,21 @@ class Logger {
*
* @var array
*/
public static array $logs = [];
public static $logs = [];
/**
* whether to output the log after FuzeWorks has run.
*
* @var bool
*/
private static bool $print_to_screen = false;
private static $print_to_screen = false;
/**
* Whether the Logger has been enabled or not
*
* @var bool
*/
private static bool $isEnabled = false;
private static $isEnabled = false;
/**
* whether to output the log of the last entire request to a file after FuzeWorks has run.
@ -93,21 +92,21 @@ class Logger {
*
* @var string Template name
*/
private static string $logger_template = 'logger_cli';
private static $logger_template = 'logger_cli';
/**
* whether to output the log after FuzeWorks has run, regardless of conditions.
*
* @var bool
*/
public static bool $debug = false;
public static $debug = false;
/**
* List of all benchmark markpoints.
*
* @var array
*/
public static array $markPoints = [];
public static $markPoints = [];
/**
* Initiates the Logger.
@ -189,8 +188,8 @@ class Logger {
*/
public static function enableHandlers()
{
Core::addErrorHandler(['\FuzeWorks\Logger', 'errorHandler']);
Core::addExceptionHandler(['\FuzeWorks\Logger', 'exceptionHandler']);
Core::addErrorHandler(['\FuzeWorks\Logger', 'errorHandler'], Priority::NORMAL);
Core::addExceptionHandler(['\FuzeWorks\Logger', 'exceptionHandler'], Priority::NORMAL);
}
/**
@ -201,8 +200,8 @@ class Logger {
*/
public static function disableHandlers()
{
Core::removeErrorHandler(['\FuzeWorks\Logger', 'errorHandler']);
Core::removeExceptionHandler(['\FuzeWorks\Logger', 'exceptionHandler']);
Core::removeErrorHandler(['\FuzeWorks\Logger', 'errorHandler'], Priority::NORMAL);
Core::removeExceptionHandler(['\FuzeWorks\Logger', 'exceptionHandler'], Priority::NORMAL);
}
/**
@ -266,7 +265,7 @@ class Logger {
* @param int Line. The line on which the error occured.
* @param array context. Some of the error's relevant variables
*/
public static function errorHandler(int $type = E_USER_NOTICE, $error = 'Undefined Error', $errFile = null, $errLine = null)
public static function errorHandler($type = E_USER_NOTICE, $error = 'Undefined Error', $errFile = null, $errLine = null)
{
// Check type
$thisType = self::getType($type);
@ -280,21 +279,20 @@ class Logger {
/**
* Exception handler
* Will be triggered when an uncaught exception occurs. This function shows the error-message, and shuts down the script.
* Will be triggered when an uncaught exception occures. This function shows the error-message, and shuts down the script.
* Please note that most of the user-defined exceptions will be caught in the router, and handled with the error-controller.
*
* @param Throwable $exception The occurred exception.
* @param Exception $exception The occured exception.
* @param bool $haltExecution. Defaults to true
*/
public static function exceptionHandler(Throwable $exception, bool $haltExecution = true)
public static function exceptionHandler($exception, bool $haltExecution = true)
{
$LOG = [
'type' => $exception instanceof Exception ? "EXCEPTION" : "ERROR",
$LOG = array('type' => 'EXCEPTION',
'message' => $exception->getMessage(),
'logFile' => $exception->getFile(),
'logLine' => $exception->getLine(),
'context' => $exception->getTraceAsString(),
'runtime' => round(self::getRelativeTime(), 4),];
'runtime' => round(self::getRelativeTime(), 4),);
self::$logs[] = $LOG;
// And return a 500 because this error was fatal
@ -377,7 +375,7 @@ class Logger {
* @param string $name Marker name
* @return void
*/
public static function mark(string $name)
public static function mark($name)
{
$LOG = array('type' => 'BMARK',
'message' => (!is_null($name) ? $name : ''),
@ -390,30 +388,30 @@ class Logger {
}
/**
* Create an information log entry.
* Create a information log entry.
*
* @param string $msg The information to be logged
* @param string|null $mod The name of the module
* @param string|null $file The file where the log occurred
* @param int|null $line The line where the log occurred
* @param string $mod The name of the module
* @param string $file The file where the log occurred
* @param int $line The line where the log occurred
*/
public static function log(string $msg, string $mod = null, string $file = null, int $line = null)
public static function log($msg, $mod = null, $file = null, $line = null)
{
self::logInfo($msg, $mod, $file, $line);
}
/**
* Create an information log entry.
* Create a information log entry.
*
* @param string $msg The information to be logged
* @param string|null $mod The name of the module
* @param string|null $file The file where the log occurred
* @param int|null $line The line where the log occurred
* @param string $mod The name of the module
* @param string $file The file where the log occurred
* @param int $line The line where the log occurred
*/
public static function logInfo(string $msg, string $mod = null, string $file = null, int $line = null)
public static function logInfo($msg, $mod = null, $file = null, $line = null)
{
$LOG = array('type' => 'INFO',
'message' => ($msg),
'message' => (!is_null($msg) ? $msg : ''),
'logFile' => (!is_null($file) ? $file : ''),
'logLine' => (!is_null($line) ? $line : ''),
'context' => (!is_null($mod) ? $mod : ''),
@ -423,17 +421,17 @@ class Logger {
}
/**
* Create an information log entry.
* Create a information log entry.
*
* @param string $msg The information to be logged
* @param string|null $mod The name of the module
* @param string|null $file The file where the log occurred
* @param int|null $line The line where the log occurred
* @param string $mod The name of the module
* @param string $file The file where the log occurred
* @param int $line The line where the log occurred
*/
public static function logDebug(string $msg, string $mod = null, string $file = null, int $line = null)
public static function logDebug($msg, $mod = null, $file = null, $line = null)
{
$LOG = array('type' => 'DEBUG',
'message' => ($msg),
'message' => (!is_null($msg) ? $msg : ''),
'logFile' => (!is_null($file) ? $file : ''),
'logLine' => (!is_null($line) ? $line : ''),
'context' => (!is_null($mod) ? $mod : ''),
@ -446,14 +444,14 @@ class Logger {
* Create a error log entry.
*
* @param string $msg The information to be logged
* @param string|null $mod The name of the module
* @param string|null $file The file where the log occurred
* @param int|null $line The line where the log occurred
* @param string $mod The name of the module
* @param string $file The file where the log occurred
* @param int $line The line where the log occurred
*/
public static function logError(string $msg, string $mod = null, string $file = null, int $line = null)
public static function logError($msg, $mod = null, $file = null, $line = null)
{
$LOG = array('type' => 'ERROR',
'message' => ($msg),
'message' => (!is_null($msg) ? $msg : ''),
'logFile' => (!is_null($file) ? $file : ''),
'logLine' => (!is_null($line) ? $line : ''),
'context' => (!is_null($mod) ? $mod : ''),
@ -466,14 +464,14 @@ class Logger {
* Create a warning log entry.
*
* @param string $msg The information to be logged
* @param string|null $mod The name of the module
* @param string|null $file The file where the log occurred
* @param int|null $line The line where the log occurred
* @param string $mod The name of the module
* @param string $file The file where the log occurred
* @param int $line The line where the log occurred
*/
public static function logWarning(string $msg, string $mod = null, string $file = null, int $line = null)
public static function logWarning($msg, $mod = null, $file = null, $line = null)
{
$LOG = array('type' => 'WARNING',
'message' => ($msg),
'message' => (!is_null($msg) ? $msg : ''),
'logFile' => (!is_null($file) ? $file : ''),
'logLine' => (!is_null($line) ? $line : ''),
'context' => (!is_null($mod) ? $mod : ''),
@ -486,14 +484,14 @@ class Logger {
* Create a new Level log entry. Used to categorise logs.
*
* @param string $msg The name of the new level
* @param string|null $mod The name of the module
* @param string|null $file The file where the log occurred
* @param int|null $line The line where the log occurred
* @param string $mod The name of the module
* @param string $file The file where the log occurred
* @param int $line The line where the log occurred
*/
public static function newLevel(string $msg, string $mod = null, string $file = null, int $line = null)
public static function newLevel($msg, $mod = null, $file = null, $line = null)
{
$LOG = array('type' => 'LEVEL_START',
'message' => ($msg),
'message' => (!is_null($msg) ? $msg : ''),
'logFile' => (!is_null($file) ? $file : ''),
'logLine' => (!is_null($line) ? $line : ''),
'context' => (!is_null($mod) ? $mod : ''),
@ -505,12 +503,12 @@ class Logger {
/**
* Create a stop Level log entry. Used to close log categories.
*
* @param string|null $msg The name of the new level
* @param string|null $mod The name of the module
* @param string|null $file The file where the log occurred
* @param int|null $line The line where the log occurred
* @param string $msg The name of the new level
* @param string $mod The name of the module
* @param string $file The file where the log occurred
* @param int $line The line where the log occurred
*/
public static function stopLevel(string $msg = null, string $mod = null, string $file = null, int $line = null)
public static function stopLevel($msg = null, $mod = null, $file = null, $line = null)
{
$LOG = array('type' => 'LEVEL_STOP',
'message' => (!is_null($msg) ? $msg : ''),
@ -532,29 +530,42 @@ class Logger {
*
* @return string String representation
*/
public static function getType(int $type): string
public static function getType($type): string
{
switch ($type) {
case E_PARSE:
case E_CORE_ERROR:
case E_COMPILE_ERROR:
case E_USER_ERROR:
case E_STRICT:
case E_RECOVERABLE_ERROR:
case E_ERROR:
return 'ERROR';
case E_NOTICE:
case E_CORE_WARNING:
case E_COMPILE_WARNING:
case E_USER_WARNING:
case E_USER_NOTICE:
case E_USER_DEPRECATED:
case E_DEPRECATED:
case E_WARNING:
return 'WARNING';
case E_PARSE:
return 'ERROR';
case E_NOTICE:
return 'WARNING';
case E_CORE_ERROR:
return 'ERROR';
case E_CORE_WARNING:
return 'WARNING';
case E_COMPILE_ERROR:
return 'ERROR';
case E_COMPILE_WARNING:
return 'WARNING';
case E_USER_ERROR:
return 'ERROR';
case E_USER_WARNING:
return 'WARNING';
case E_USER_NOTICE:
return 'WARNING';
case E_USER_DEPRECATED:
return 'WARNING';
case E_STRICT:
return 'ERROR';
case E_RECOVERABLE_ERROR:
return 'ERROR';
case E_DEPRECATED:
return 'WARNING';
}
return 'Unknown error: ' . $type;
return $type = 'Unknown error: ' . $type;
}
/**
@ -589,6 +600,8 @@ class Logger {
private static function getRelativeTime(): float
{
$startTime = STARTTIME;
return microtime(true) - $startTime;
$time = microtime(true) - $startTime;
return $time;
}
}

View File

@ -31,7 +31,7 @@
* @link http://techfuze.net/fuzeworks
* @since Version 1.1.4
*
* @version Version 1.3.0
* @version Version 1.2.0
*/
namespace FuzeWorks;
@ -41,6 +41,7 @@ use FuzeWorks\Exception\CoreException;
use FuzeWorks\Exception\FactoryException;
use FuzeWorks\Exception\PluginException;
use ReflectionClass;
use ReflectionException;
/**
* Plugins Class.
@ -71,7 +72,7 @@ class Plugins
*
* @var array Array of loaded plugins
*/
protected array $plugins = array();
protected $plugins = array();
/**
* Array of plugin header classes.
@ -79,14 +80,14 @@ class Plugins
*
* @var array Array of loaded plugin header classes
*/
protected array $headers = array();
protected $headers = array();
/**
* Config file for the plugin system
*
* @var ConfigORM
*/
protected ConfigORM $cfg;
protected $cfg;
/**
* Called upon initialization of the Container
@ -141,7 +142,11 @@ class Plugins
// Load the header
$this->loadHeader($header);
}
// If it doesn't exist, skip it
continue;
}
}
}
}
@ -192,12 +197,13 @@ class Plugins
* Get a plugin.
*
* @param string $pluginName Name of the plugin
* @param array|null $parameters Parameters to send to the __construct() method
* @param array $parameters Parameters to send to the __construct() method
* @return mixed Plugin on success, bool on cancellation
* @throws Exception\EventException
* @throws PluginException
* @throws ReflectionException
*/
public function get(string $pluginName, array $parameters = null)
public function get($pluginName, array $parameters = null)
{
if (empty($pluginName))
throw new PluginException("Could not load plugin. No name provided", 1);
@ -213,7 +219,7 @@ class Plugins
elseif ($event->getPlugin() != null)
return $event->getPlugin();
// Otherwise, just set the variables
// Otherwise just set the variables
$pluginName = $event->pluginName;
// Check if the plugin is already loaded and return directly

View File

@ -31,7 +31,7 @@
* @link http://techfuze.net/fuzeworks
* @since Version 0.0.1
*
* @version Version 1.3.0
* @version Version 1.2.0
*/
namespace FuzeWorks;
@ -90,22 +90,22 @@ abstract class Priority
/**
* Returns the highest priority
* This function is needed for executing in the right order.
* This function is needed for executing in the right order,.
*
* @return int
*/
public static function getHighestPriority(): int
public static function getHighestPriority()
{
return self::MONITOR;
}
/**
* Returns the lowest priority
* This function is needed for executing in the right order.
* This function is needed for executing in the right order,.
*
* @return int
*/
public static function getLowestPriority(): int
public static function getLowestPriority()
{
return self::LOWEST;
}

View File

@ -31,12 +31,11 @@
* @link http://techfuze.net/fuzeworks
* @since Version 1.2.0
*
* @version Version 1.3.0
* @version Version 1.2.0
*/
if (!function_exists('getColoredString'))
{
function getColoredString($string, $foreground_color, $background_color): string
{
function getColoredString($string, $foreground_color, $background_color) {
// Determine the color system
$foreground_colors = array();

View File

@ -31,9 +31,11 @@
* @link http://techfuze.net/fuzeworks
* @since Version 0.0.1
*
* @version Version 1.3.0
* @version Version 1.2.0
*/
use FuzeWorks\Config;
use FuzeWorks\Core;
use FuzeWorks\Logger;
// First set the working directory

View File

@ -31,7 +31,7 @@
* @link http://techfuze.net/fuzeworks
* @since Version 1.2.0
*
* @version Version 1.3.0
* @version Version 1.2.0
*/
require_once(dirname(__DIR__) . '/vendor/autoload.php');
@ -45,7 +45,10 @@ $configurator->setLogDirectory(__DIR__ . '/temp');
$configurator->setTimeZone('Europe/Amsterdam');
// Debug related
$configurator->enableDebugMode();
$configurator->enableDebugMode(true);
$configurator->setDebugAddress('ALL');
//$configurator->setDebugEmail('example@mail.com');
$container = $configurator->createContainer();
return $container;
return $configurator->createContainer();

View File

@ -31,7 +31,7 @@
* @link http://techfuze.net/fuzeworks
* @since Version 1.2.0
*
* @version Version 1.3.0
* @version Version 1.2.0
*/
namespace FuzeWorks\Component;
use FuzeWorks\Configurator;
@ -56,7 +56,7 @@ class TestComponent implements iComponent
return $configurator;
}
public function onCreateContainer(Factory $container): Factory
public function onCreateContainer(Factory $container)
{
return $container;
}
@ -64,5 +64,5 @@ class TestComponent implements iComponent
class Test
{
public int $variable = 5;
public $variable = 5;
}

View File

@ -31,7 +31,7 @@
* @link http://techfuze.net/fuzeworks
* @since Version 1.2.0
*
* @version Version 1.3.0
* @version Version 1.2.0
*/
namespace FuzeWorks\Component;
use FuzeWorks\ComponentPathsTrait;
@ -47,12 +47,12 @@ class TestAddComponentDirectoryComponent implements iComponent
return ['testaddcomponentdirectory' => 'FuzeWorks\Component\TestAddComponentDirectory'];
}
public function onAddComponent(Configurator $configurator): Configurator
public function onAddComponent(Configurator $configurator)
{
return $configurator;
}
public function onCreateContainer(Factory $container): Factory
public function onCreateContainer(Factory $container)
{
return $container;
}
@ -67,5 +67,5 @@ class TestAddComponentDirectory
{
use ComponentPathsTrait;
public int $variable = 5;
public $variable = 5;
}

View File

@ -31,7 +31,7 @@
* @link http://techfuze.net/fuzeworks
* @since Version 1.2.0
*
* @version Version 1.3.0
* @version Version 1.2.0
*/
namespace FuzeWorks\Component;
use FuzeWorks\Configurator;
@ -56,7 +56,7 @@ class TestAddComponentFailComponent implements iComponent
return $configurator;
}
public function onCreateContainer(Factory $container): Factory
public function onCreateContainer(Factory $container)
{
return $container;
}
@ -64,5 +64,5 @@ class TestAddComponentFailComponent implements iComponent
class TestAddComponentFail
{
public int $variable = 5;
public $variable = 5;
}

View File

@ -1,42 +0,0 @@
<?php
/**
* FuzeWorks Framework Core.
*
* The FuzeWorks PHP FrameWork
*
* Copyright (C) 2013-2019 TechFuze
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*
* @author TechFuze
* @copyright Copyright (c) 2013 - 2019, TechFuze. (http://techfuze.net)
* @license https://opensource.org/licenses/MIT MIT License
*
* @link http://techfuze.net/fuzeworks
* @since Version 1.2.0
*
* @version Version 1.2.0
*/
use FuzeWorks\Core;
return array(
'testKey' => Core::getEnv('TESTKEY'),
'otherKey' => Core::getEnv('OTHERKEY', 'somethingDefault')
);

View File

@ -1,37 +0,0 @@
<?php
/**
* FuzeWorksCore
*
* Copyright (C) 2013-2021 i15
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*
* @author i15
* @copyright Copyright (c) 2013 - 2021, i15. (https://i15.nl)
* @license https://opensource.org/licenses/MIT MIT License
*
* @since Version 1.0.0
*
* @version Version 1.3.2
*/
return array(
'first' => 'world',
'onlyInHigh' => 'highValue',
'override' => 'firstValue'
);

View File

@ -1,36 +0,0 @@
<?php
/**
* FuzeWorksCore
*
* Copyright (C) 2013-2021 i15
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*
* @author i15
* @copyright Copyright (c) 2013 - 2021, i15. (https://i15.nl)
* @license https://opensource.org/licenses/MIT MIT License
*
* @since Version 1.0.0
*
* @version Version 1.3.2
*/
return array(
'first' => 'hello',
'onlyInLow' => 'lowValue'
);

View File

@ -31,13 +31,14 @@
* @link http://techfuze.net/fuzeworks
* @since Version 0.0.1
*
* @version Version 1.3.0
* @version Version 1.2.0
*/
use PHPUnit\Framework\TestCase;
use FuzeWorks\Events;
use FuzeWorks\Factory;
use FuzeWorks\Core;
use FuzeWorks\Config;
use FuzeWorks\LoggerTracyBridge;
/**
* Class CoreTestAbstract.
@ -49,7 +50,7 @@ abstract class CoreTestAbstract extends TestCase
/**
* Reset multiple components to their original state before running the next test
*/
public function tearDown(): void
public function tearDown()
{
// Clear all events created by tests
Events::$listeners = [];

View File

@ -31,12 +31,11 @@
* @link http://techfuze.net/fuzeworks
* @since Version 0.0.1
*
* @version Version 1.3.0
* @version Version 1.2.0
*/
use FuzeWorks\Config;
use FuzeWorks\Event\ConfigGetEvent;
use FuzeWorks\Exception\ConfigException;
use FuzeWorks\Priority;
use FuzeWorks\Events;
@ -52,9 +51,9 @@ class configTest extends CoreTestAbstract
/**
* @var Config
*/
protected Config $config;
protected $config;
public function setUp(): void
public function setUp()
{
$this->config = new Config();
}
@ -91,10 +90,10 @@ class configTest extends CoreTestAbstract
/**
* @depends testLoadConfig
* @covers ::loadConfigFile
* @expectedException FuzeWorks\Exception\ConfigException
*/
public function testFileNotFound()
{
$this->expectException(ConfigException::class);
$this->config->getConfig('notFound');
}
@ -184,50 +183,11 @@ class configTest extends CoreTestAbstract
$this->assertSame($config, $config2);
// First test the existing key
$this->assertEquals('value', $config->key);
$this->assertEquals($config->key, 'value');
// Change it and test if it's different now
$config->key = 'other_value';
$this->assertEquals('other_value', $config2->key);
}
/**
* @coversNothing
*/
public function testConfigWithEnvironmentVariables()
{
// First push the test variable
putenv('TESTKEY=Superb');
// Load the config
$config = $this->config->getConfig('testconfigwithenvironment', ['test'.DS.'config'.DS.'TestConfigWithEnvironment']);
// Check values
$this->assertEquals('Superb', $config->get('testKey'));
$this->assertEquals('somethingDefault', $config->get('otherKey'));
}
/**
* @covers ::loadConfigFile
* @depends testLoadConfigCoreOverride
*/
public function testCumulativeConfigFile()
{
// Add folders
$this->config->addComponentPath('test'.DS.'config'.DS.'TestCumulativeConfigFile'.DS.'HighPriorityFolder', Priority::HIGH);
$this->config->addComponentPath('test'.DS.'config'.DS.'TestCumulativeConfigFile'.DS.'LowPriorityFolder', Priority::LOW);
// And override a value
Config::overrideConfig('cumulative', 'override', 'secondValue');
// Load the config
$config = $this->config->get('cumulative');
// Check values
$this->assertEquals("world", $config->get('first'));
$this->assertEquals("highValue", $config->get('onlyInHigh'));
$this->assertEquals("lowValue", $config->get('onlyInLow'));
$this->assertEquals("secondValue", $config->get('override'));
$this->assertEquals($config2->key, 'other_value');
}
}

View File

@ -31,13 +31,11 @@
* @link http://techfuze.net/fuzeworks
* @since Version 1.2.0
*
* @version Version 1.3.0
* @version Version 1.2.0
*/
use FuzeWorks\Config;
use FuzeWorks\Configurator;
use FuzeWorks\Core;
use FuzeWorks\Exception\ConfiguratorException;
use FuzeWorks\Factory;
use FuzeWorks\iComponent;
use FuzeWorks\Logger;
@ -54,9 +52,9 @@ class configuratorTest extends CoreTestAbstract
/**
* @var Configurator
*/
protected Configurator $configurator;
protected $configurator;
public function setUp(): void
public function setUp()
{
$this->configurator = new Configurator;
$this->configurator->setTempDirectory(dirname(__DIR__) . '/temp');
@ -64,7 +62,7 @@ class configuratorTest extends CoreTestAbstract
$this->configurator->setTimeZone('Europe/Amsterdam');
}
public function tearDown(): void
public function tearDown()
{
parent::tearDown();
@ -134,6 +132,7 @@ class configuratorTest extends CoreTestAbstract
* @depends testAddComponent
* @covers ::addComponent
* @covers ::createContainer
* @expectedException FuzeWorks\Exception\ConfiguratorException
*/
public function testAddComponentFail()
{
@ -143,7 +142,6 @@ class configuratorTest extends CoreTestAbstract
$this->configurator->addComponent($component);
// Create container and fail
$this->expectException(ConfiguratorException::class);
$this->configurator->createContainer();
}
@ -177,11 +175,11 @@ class configuratorTest extends CoreTestAbstract
/**
* @depends testSetLogDirectory
* @covers ::setLogDirectory
* @expectedException \FuzeWorks\Exception\InvalidArgumentException
*/
public function testSetLogDirectoryNotDirectory()
{
// Set the directory
$this->expectException(\FuzeWorks\Exception\InvalidArgumentException::class);
$this->configurator->setLogDirectory('not_exist');
}
@ -206,11 +204,11 @@ class configuratorTest extends CoreTestAbstract
/**
* @depends testSetTempDirectory
* @covers ::setTempDirectory
* @expectedException \FuzeWorks\Exception\InvalidArgumentException
*/
public function testSetTempDirectoryNotDirectory()
{
// Set the directory
$this->expectException(\FuzeWorks\Exception\InvalidArgumentException::class);
$this->configurator->setTempDirectory('not_exist');
}
@ -247,10 +245,10 @@ class configuratorTest extends CoreTestAbstract
/**
* @depends testAddComponentDirectory
* @covers ::addDirectory
* @expectedException \FuzeWorks\Exception\InvalidArgumentException
*/
public function testAddComponentDirectoryNotExist()
{
$this->expectException(\FuzeWorks\Exception\InvalidArgumentException::class);
$this->configurator->addDirectory('not_exist', 'irrelevant');
}
@ -344,11 +342,11 @@ class configuratorTest extends CoreTestAbstract
/**
* @depends testSetTimezone
* @expectedException \FuzeWorks\Exception\InvalidArgumentException
* @covers ::setTimeZone
*/
public function testSetTimezoneInvalid()
{
$this->expectException(\FuzeWorks\Exception\InvalidArgumentException::class);
$this->configurator->setTimeZone('Europe/Amsterdamned');
}
@ -381,7 +379,7 @@ class configuratorTest extends CoreTestAbstract
$this->configurator->createContainer();
// Verify that the variable is set in the Config class
$this->assertEquals(['test' => ['somekey' => 'somevalue']], Config::$configOverrides);
$this->assertEquals(['test' => ['somekey' => 'somevalue']], \FuzeWorks\Config::$configOverrides);
}
/* ---------------------------------- Debugging ------------------------------------------------- */
@ -474,10 +472,10 @@ class configuratorTest extends CoreTestAbstract
/**
* @depends testEnableDebugMode
* @covers ::setDebugAddress
* @expectedException \FuzeWorks\Exception\InvalidArgumentException
*/
public function testSetDebugAddressInvalidArgument()
{
$this->expectException(\FuzeWorks\Exception\InvalidArgumentException::class);
$this->configurator->setDebugAddress(null);
}
}
@ -499,7 +497,7 @@ class MockComponent implements iComponent
return $configurator;
}
public function onCreateContainer(Factory $container): Factory
public function onCreateContainer(Factory $container)
{
return $container;
}

View File

@ -72,20 +72,4 @@ class coreTest extends CoreTestAbstract
$this->assertTrue(Core::isPHP('1.2.0'));
$this->assertFalse(Core::isphp('9999.9.9'));
}
/**
* @covers ::getEnv
*/
public function testGetEnv()
{
// First push some test variables
putenv('TESTGETENV=AFFIRMED');
// Then try and fetch using the method
$this->assertEquals('AFFIRMED', Core::getEnv('TESTGETENV'));
// Also test variables that don't exist
$this->assertNull(Core::getEnv('TESTNOTEXIST'));
$this->assertEquals('replacement', Core::getEnv('TESTNOTEXISTTWO', 'replacement'));
}
}

View File

@ -31,9 +31,10 @@
* @link http://techfuze.net/fuzeworks
* @since Version 1.0.4
*
* @version Version 1.3.0
* @version Version 1.2.0
*/
use FuzeWorks\Events;
use FuzeWorks\Event;
use FuzeWorks\Priority;
/**

View File

@ -31,12 +31,11 @@
* @link http://techfuze.net/fuzeworks
* @since Version 0.0.1
*
* @version Version 1.3.0
* @version Version 1.2.0
*/
use FuzeWorks\Event;
use FuzeWorks\Events;
use FuzeWorks\Exception\EventException;
use FuzeWorks\Priority;
/**
@ -146,21 +145,21 @@ class eventsTest extends CoreTestAbstract
/**
* @depends testFireEvent
* @expectedException FuzeWorks\Exception\EventException
* @covers ::fireEvent
*/
public function testInvalidTypeEvent()
{
$this->expectException(EventException::class);
Events::fireEvent(array('x', 'y', 'z'));
}
/**
* @depends testFireEvent
* @covers ::fireEvent
* @expectedException FuzeWorks\Exception\EventException
*/
public function testInvalidClassEvent()
{
$this->expectException(EventException::class);
Events::fireEvent('nonExistingEvent', 'x', 'y', 'z');
}
@ -186,30 +185,30 @@ class eventsTest extends CoreTestAbstract
/**
* @depends testAddAndRemoveListener
* @covers ::addListener
* @expectedException FuzeWorks\Exception\EventException
*/
public function testAddInvalidPriorityListener()
{
$this->expectException(EventException::class);
Events::addListener(function($event){}, 'mockEvent', 99);
}
/**
* @depends testAddAndRemoveListener
* @covers ::addListener
* @expectedException FuzeWorks\Exception\EventException
*/
public function testAddInvalidNameListener()
{
$this->expectException(EventException::class);
Events::addListener(function($e) {}, '', Priority::NORMAL);
}
/**
* @depends testAddAndRemoveListener
* @covers ::removeListener
* @expectedException FuzeWorks\Exception\EventException
*/
public function testRemoveInvalidPriorityListener()
{
$this->expectException(EventException::class);
Events::removeListener(function($event){}, 'mockEvent', 99);
}
@ -229,7 +228,7 @@ class eventsTest extends CoreTestAbstract
public function testRemoveUnsetListener()
{
Events::addListener(function($e) {}, 'mockEvent', Priority::NORMAL);
$this->assertNull(Events::removeListener(function() {echo "Called"; }, 'mockEvent', Priority::NORMAL));
$this->assertNull(Events::removeListener(function($x) {echo "Called"; }, 'mockEvent', Priority::NORMAL));
}
/**

View File

@ -31,7 +31,7 @@
* @link http://techfuze.net/fuzeworks
* @since Version 0.0.1
*
* @version Version 1.3.0
* @version Version 1.2.0
*/
use FuzeWorks\Exception\Exception;
@ -53,63 +53,83 @@ use FuzeWorks\Exception\ConfiguratorException;
class exceptionTestTest extends CoreTestAbstract
{
/**
* @expectedException FuzeWorks\Exception\Exception
*/
public function testException()
{
$this->expectException(Exception::class);
throw new Exception("Exception Test Run", 1);
}
/**
* @expectedException FuzeWorks\Exception\CoreException
*/
public function testCoreException()
{
$this->expectException(CoreException::class);
throw new CoreException("Exception Test Run", 1);
}
/**
* @expectedException FuzeWorks\Exception\ConfigException
*/
public function testConfigException()
{
$this->expectException(ConfigException::class);
throw new ConfigException("Exception Test Run", 1);
}
/**
* @expectedException FuzeWorks\Exception\EventException
*/
public function testEventException()
{
$this->expectException(EventException::class);
throw new EventException("Exception Test Run", 1);
}
/**
* @expectedException FuzeWorks\Exception\FactoryException
*/
public function testFactoryException()
{
$this->expectException(FactoryException::class);
throw new FactoryException("Exception Test Run", 1);
}
/**
* @expectedException FuzeWorks\Exception\HelperException
*/
public function testHelperException()
{
$this->expectException(HelperException::class);
throw new HelperException("Exception Test Run", 1);
}
/**
* @expectedException FuzeWorks\Exception\InvalidArgumentException
*/
public function testInvalidArgumentException()
{
$this->expectException(InvalidArgumentException::class);
throw new InvalidArgumentException("Exception Test Run", 1);
}
/**
* @expectedException FuzeWorks\Exception\LibraryException
*/
public function testLibraryException()
{
$this->expectException(LibraryException::class);
throw new LibraryException("Exception Test Run", 1);
}
/**
* @expectedException FuzeWorks\Exception\LoggerException
*/
public function testLoggerException()
{
$this->expectException(LoggerException::class);
throw new LoggerException("Exception Test Run", 1);
}
/**
* @expectedException FuzeWorks\Exception\ConfiguratorException
*/
public function testConfiguratorException()
{
$this->expectException(ConfiguratorException::class);
throw new ConfiguratorException("Exception Test Run", 1);
}

View File

@ -31,7 +31,7 @@
* @link http://techfuze.net/fuzeworks
* @since Version 0.0.1
*
* @version Version 1.3.0
* @version Version 1.2.0
*/
use FuzeWorks\Factory;
@ -73,10 +73,10 @@ class factoryTest extends CoreTestAbstract
/**
* @depends testGetInstance
* @covers ::getInstance
* @expectedException \FuzeWorks\Exception\FactoryException
*/
public function testGetInstanceNotFound()
{
$this->expectException(FactoryException::class);
Factory::getInstance('NotFound');
}
@ -183,6 +183,7 @@ class factoryTest extends CoreTestAbstract
/**
* @depends testCanLoadFactory
* @covers ::cloneInstance
* @expectedException FuzeWorks\Exception\FactoryException
*/
public function testCloneInstanceWrongClassname()
{
@ -190,7 +191,6 @@ class factoryTest extends CoreTestAbstract
$factory = new Factory;
// Attempt
$this->expectException(FactoryException::class);
$factory->cloneInstance('fake');
}
@ -223,6 +223,7 @@ class factoryTest extends CoreTestAbstract
/**
* @depends testNewFactoryInstance
* @covers ::newInstance
* @expectedException FuzeWorks\Exception\FactoryException
*/
public function testFactoryNewInstanceNotExist()
{
@ -230,13 +231,13 @@ class factoryTest extends CoreTestAbstract
$factory = new Factory;
// First, it does not exist
$this->expectException(FactoryException::class);
$factory->newInstance('fake');
}
/**
* @depends testNewFactoryInstance
* @covers ::newInstance
* @expectedException FuzeWorks\Exception\FactoryException
*/
public function testFactoryNewInstanceWrongNamespace()
{
@ -244,7 +245,6 @@ class factoryTest extends CoreTestAbstract
$factory = new Factory;
// Second, it just fails
$this->expectException(FactoryException::class);
$factory->newInstance('helpers', 'Test\\');
}
@ -278,6 +278,7 @@ class factoryTest extends CoreTestAbstract
/**
* @depends testRemoveInstance
* @covers ::removeInstance
* @expectedException FuzeWorks\Exception\FactoryException
*/
public function testRemoveInstanceNotExist()
{
@ -285,7 +286,6 @@ class factoryTest extends CoreTestAbstract
$factory = new Factory;
// Test
$this->expectException(FactoryException::class);
$factory->removeInstance('fake');
}
@ -308,7 +308,7 @@ class factoryTest extends CoreTestAbstract
$this->assertEquals(5, $factory->test);
}
public function tearDown(): void
public function tearDown()
{
parent::tearDown();

View File

@ -31,7 +31,7 @@
* @link http://techfuze.net/fuzeworks
* @since Version 0.0.1
*
* @version Version 1.3.0
* @version Version 1.2.0
*/
use FuzeWorks\Priority;
@ -50,9 +50,9 @@ class helperTest extends CoreTestAbstract
/**
* @var Helpers
*/
protected Helpers $helpers;
protected $helpers;
public function setUp(): void
public function setUp()
{
// Prepare class
$this->helpers = new Helpers();

View File

@ -31,10 +31,10 @@
* @link http://techfuze.net/fuzeworks
* @since Version 0.0.1
*
* @version Version 1.3.0
* @version Version 1.2.0
*/
use FuzeWorks\Exception\LibraryException;
use FuzeWorks\Core;
use FuzeWorks\Factory;
use FuzeWorks\Libraries;
@ -50,9 +50,9 @@ class libraryTest extends CoreTestAbstract
/**
* @var Libraries
*/
protected Libraries $libraries;
protected $libraries;
public function setUp(): void
public function setUp()
{
// Load new libraries class
$this->libraries = new Libraries();
@ -110,10 +110,10 @@ class libraryTest extends CoreTestAbstract
* @depends testGetLibraryFromDirectory
* @covers ::get
* @covers ::initLibrary
* @expectedException FuzeWorks\Exception\LibraryException
*/
public function testGetLibraryFail()
{
$this->expectException(LibraryException::class);
$this->libraries->get('FailLoadLibrary');
}
@ -121,10 +121,10 @@ class libraryTest extends CoreTestAbstract
* @depends testGetLibraryFromDirectory
* @covers ::get
* @covers ::initLibrary
* @expectedException FuzeWorks\Exception\LibraryException
*/
public function testGetLibraryNoName()
{
$this->expectException(LibraryException::class);
$this->libraries->get('');
}
@ -132,10 +132,10 @@ class libraryTest extends CoreTestAbstract
* @depends testGetLibraryFromDirectory
* @covers ::get
* @covers ::initLibrary
* @expectedException FuzeWorks\Exception\LibraryException
*/
public function testGetLibraryNoClass()
{
$this->expectException(LibraryException::class);
$this->libraries->get('TestGetLibraryNoClass');
}
@ -167,10 +167,9 @@ class libraryTest extends CoreTestAbstract
*/
public function testAddLibraryObject()
{
$z = new stdClass();
$this->libraries->addLibraryObject('TestAddLibraryObject', $z);
$this->libraries->addLibraryObject('TestAddLibraryObject', 5);
$this->assertEquals($z, $this->libraries->get('TestAddLibraryObject'));
$this->assertEquals(5, $this->libraries->get('TestAddLibraryObject'));
}
/**
@ -189,10 +188,10 @@ class libraryTest extends CoreTestAbstract
/**
* @depends testAddLibraryClass
* @covers ::addLibraryClass
* @expectedException \FuzeWorks\Exception\LibraryException
*/
public function testAddLibraryClassFail()
{
$this->expectException(LibraryException::class);
$this->libraries->addLibraryClass('LibraryClassFail', '\Case\Not\Exist');
}
@ -215,14 +214,14 @@ class libraryTest extends CoreTestAbstract
/**
* @depends testAddLibraryWithAutoloader
* @covers ::initLibrary
* @expectedException \FuzeWorks\Exception\LibraryException
*/
public function testAddBadAutoloader()
{
$this->expectException(LibraryException::class);
$this->assertInstanceOf('Application\Library\TestAddBadAutoloader', $this->libraries->get('TestAddBadAutoloader'));
}
public function tearDown(): void
public function tearDown()
{
parent::tearDown();

View File

@ -31,7 +31,7 @@
* @link http://techfuze.net/fuzeworks
* @since Version 0.0.1
*
* @version Version 1.3.0
* @version Version 1.2.0
*/
use FuzeWorks\Events;
@ -47,11 +47,11 @@ use FuzeWorks\Exception\LoggerException;
*/
class loggerTest extends CoreTestAbstract
{
protected Logger $logger;
protected $logger;
protected string $output;
protected $output;
public function setUp(): void
public function setUp()
{
Factory::getInstance()->config->get('error')->fuzeworks_error_reporting = false;
Logger::$logs = array();
@ -105,7 +105,7 @@ class loggerTest extends CoreTestAbstract
E_STRICT => 'ERROR',
E_RECOVERABLE_ERROR => 'ERROR',
E_DEPRECATED => 'WARNING',
0 => 'Unknown error: 0'
'UNKNOWN' => 'Unknown error: UNKNOWN'
);
foreach ($types as $errorType => $output) {
@ -135,32 +135,12 @@ class loggerTest extends CoreTestAbstract
Events::addListener(function($event){
$event->setCancelled(true);
$this->assertEquals('FAILURE', $event->log['message']);
$this->assertEquals("EXCEPTION", $event->log['type']);
}, 'haltExecutionEvent');
// Log the exception
Logger::exceptionHandler($exception);
}
/**
* @covers ::exceptionHandler
* @depends testExceptionHandler
*/
public function testErrorsToExceptionHandler()
{
// Create the error
$error = new ParseError("FAILURE_ERROR");
// Prepare to intercept
Events::addListener(function ($event) {
$event->setCancelled(true);
$this->assertEquals("FAILURE_ERROR", $event->log['message']);
$this->assertEquals("ERROR", $event->log['type']);
}, 'haltExecutionEvent');
Logger::exceptionHandler($error);
}
/**
* @covers ::log
*/
@ -231,7 +211,7 @@ class loggerTest extends CoreTestAbstract
$this->assertFalse(Logger::isEnabled());
}
public function tearDown(): void
public function tearDown()
{
parent::tearDown();

View File

@ -31,10 +31,10 @@
* @link http://techfuze.net/fuzeworks
* @since Version 1.1.4
*
* @version Version 1.3.0
* @version Version 1.2.0
*/
use FuzeWorks\Exception\PluginException;
use FuzeWorks\Core;
use FuzeWorks\Factory;
use FuzeWorks\Plugins;
@ -50,9 +50,9 @@ class pluginTest extends CoreTestAbstract
/**
* @var FuzeWorks\Plugins
*/
protected Plugins $plugins;
protected $plugins;
public function setUp(): void
public function setUp()
{
$this->plugins = new Plugins();
$this->plugins->init();
@ -106,10 +106,10 @@ class pluginTest extends CoreTestAbstract
/**
* @depends testLoadPlugin
* @covers ::get
* @expectedException FuzeWorks\Exception\PluginException
*/
public function testMissingHeader()
{
$this->expectException(PluginException::class);
$this->plugins->get('testMissingHeader');
}
@ -134,39 +134,39 @@ class pluginTest extends CoreTestAbstract
/**
* @depends testLoadPlugin
* @covers ::get
* @expectedException FuzeWorks\Exception\PluginException
*/
public function testMissingPlugin()
{
$this->expectException(PluginException::class);
$this->plugins->get('testMissingPlugin');
}
/**
* @depends testMissingPlugin
* @covers ::get
* @expectedException FuzeWorks\Exception\PluginException
*/
public function testLoadHeaderNotIPluginHeader()
{
$this->expectException(PluginException::class);
$this->plugins->get('TestLoadHeaderNotIPluginHeader');
}
/**
* @depends testLoadPlugin
* @covers ::get
* @expectedException FuzeWorks\Exception\PluginException
*/
public function testInvalidClass()
{
$this->expectException(PluginException::class);
$this->plugins->get('testInvalidClass');
}
/**
* @covers ::get
* @expectedException FuzeWorks\Exception\PluginException
*/
public function testGetMissingName()
{
$this->expectException(PluginException::class);
$this->plugins->get('');
}
@ -174,12 +174,12 @@ class pluginTest extends CoreTestAbstract
* @depends testLoadPlugin
* @covers ::get
* @covers ::loadHeadersFromPluginPaths
* @expectedException FuzeWorks\Exception\PluginException
*/
public function testDisabledPlugin()
{
Factory::getInstance()->config->plugins->disabled_plugins = array('TestDisabledPlugin');
$this->plugins->loadHeadersFromPluginPaths();
$this->expectException(PluginException::class);
$this->plugins->get('testDisabledPlugin');
}
@ -187,16 +187,16 @@ class pluginTest extends CoreTestAbstract
* @depends testLoadPlugin
* @covers ::get
* @covers ::loadHeadersFromPluginPaths
* @expectedException FuzeWorks\Exception\PluginException
*/
public function testRunInvalidDirectory()
{
$this->plugins->addComponentPath('exists_not');
$this->plugins->loadHeadersFromPluginPaths();
$this->expectException(PluginException::class);
$this->plugins->get('testRunInvalidDirectory');
}
public function tearDown(): void
public function tearDown()
{
parent::tearDown();

View File

@ -31,7 +31,7 @@
* @link http://techfuze.net/fuzeworks
* @since Version 1.0.4
*
* @version Version 1.3.0
* @version Version 1.2.0
*/
use FuzeWorks\Priority;
@ -62,12 +62,12 @@ class priorityTest extends CoreTestAbstract
*/
public function testGetPriority()
{
$this->assertEquals('Priority::LOWEST', Priority::getPriority(5));
$this->assertEquals('Priority::LOW', Priority::getPriority(4));
$this->assertEquals('Priority::NORMAL', Priority::getPriority(3));
$this->assertEquals('Priority::HIGH', Priority::getPriority(2));
$this->assertEquals('Priority::HIGHEST', Priority::getPriority(1));
$this->assertEquals('Priority::MONITOR', Priority::getPriority(0));
$this->assertEquals(Priority::getPriority(5), 'Priority::LOWEST');
$this->assertEquals(Priority::getPriority(4), 'Priority::LOW');
$this->assertEquals(Priority::getPriority(3), 'Priority::NORMAL');
$this->assertEquals(Priority::getPriority(2), 'Priority::HIGH');
$this->assertEquals(Priority::getPriority(1), 'Priority::HIGHEST');
$this->assertEquals(Priority::getPriority(0), 'Priority::MONITOR');
}
/**
@ -83,7 +83,7 @@ class priorityTest extends CoreTestAbstract
*/
public function testHighestPriority()
{
$this->assertEquals(Priority::MONITOR, Priority::getHighestPriority());
$this->assertEquals(Priority::getHighestPriority(), Priority::MONITOR);
}
/**
@ -91,7 +91,7 @@ class priorityTest extends CoreTestAbstract
*/
public function testLowestPriority()
{
$this->assertEquals(Priority::LOWEST, Priority::getLowestPriority());
$this->assertEquals(Priority::getLowestPriority(), Priority::LOWEST);
}
}

View File

@ -31,7 +31,7 @@
* @link http://techfuze.net/fuzeworks
* @since Version 1.1.4
*
* @version Version 1.3.0
* @version Version 1.2.0
*/
use FuzeWorks\Factory;
use FuzeWorks\Events;
@ -64,14 +64,11 @@ class pluginGetEventTest extends CoreTestAbstract
{
// Create mock listener
Events::addListener(
function($event){
$z = new stdClass();
$event->setPlugin($z);return $event;
},
function($event){$event->setPlugin('test_string');return $event;},
'pluginGetEvent',
Priority::NORMAL);
// And fire the event
$this->assertInstanceOf('\stdClass', Factory::getInstance()->plugins->get('test'));
$this->assertEquals('test_string', Factory::getInstance()->plugins->get('test'));
}
}

View File

@ -31,13 +31,13 @@
* @link http://techfuze.net/fuzeworks
* @since Version 0.0.1
*
* @version Version 1.3.0
* @version Version 1.2.0
*/
if ( ! function_exists('testCancelLoadHelper'))
{
function testCancelLoadHelper(): string
function testCancelLoadHelper($someParameter)
{
return 'SomeResult';
}

View File

@ -31,13 +31,13 @@
* @link http://techfuze.net/fuzeworks
* @since Version 0.0.1
*
* @version Version 1.3.0
* @version Version 1.2.0
*/
if ( ! function_exists('testGetHelper'))
{
function testGetHelper(): string
function testGetHelper($someParameter)
{
return 'SomeResult';
}

View File

@ -31,12 +31,12 @@
* @link http://techfuze.net/fuzeworks
* @since Version 1.2.0
*
* @version Version 1.3.0
* @version Version 1.2.0
*/
if ( ! function_exists('testHelperFunction'))
{
function testHelperFunction(): string
function testHelperFunction($someParameter)
{
return 'SomeResult';
}

View File

@ -31,13 +31,13 @@
* @link http://techfuze.net/fuzeworks
* @since Version 1.2.0
*
* @version Version 1.3.0
* @version Version 1.2.0
*/
if ( ! function_exists('testLoadHelperWithAltDirectory'))
{
function testLoadHelperWithAltDirectory(): string
function testLoadHelperWithAltDirectory($someParameter)
{
return 'SomeResult';
}

View File

@ -31,13 +31,13 @@
* @link http://techfuze.net/fuzeworks
* @since Version 0.0.1
*
* @version Version 1.3.0
* @version Version 1.2.0
*/
if ( ! function_exists('testLoadHelperWithoutSubdirectory'))
{
function testLoadHelperWithoutSubdirectory(): string
function testLoadHelperWithoutSubdirectory($someParameter)
{
return 'SomeResult';
}

View File

@ -31,13 +31,13 @@
* @link http://techfuze.net/fuzeworks
* @since Version 0.0.1
*
* @version Version 1.3.0
* @version Version 1.2.0
*/
if ( ! function_exists('testReloadHelper'))
{
function testReloadHelper(): string
function testReloadHelper($someParameter)
{
return 'SomeResult';
}

View File

@ -1,19 +1,36 @@
<?xml version="1.0"?>
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/9.3/phpunit.xsd" bootstrap="autoload.php" convertErrorsToExceptions="true" convertNoticesToExceptions="true" convertWarningsToExceptions="true" stopOnError="false" stopOnFailure="false" stopOnIncomplete="false" stopOnSkipped="false" colors="false">
<coverage processUncoveredFiles="false">
<include>
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/4.5/phpunit.xsd"
bootstrap="autoload.php"
convertErrorsToExceptions="true"
convertNoticesToExceptions="true"
convertWarningsToExceptions="true"
stopOnError="false"
stopOnFailure="false"
stopOnIncomplete="false"
stopOnSkipped="false"
colors="false">
<testsuites>
<testsuite name="Core Functionality">
<directory>./</directory>
</testsuite>
</testsuites>
<logging>
<log type="json" target="../build/phpunit/logfile.json"/>
<log type="junit" target="../build/phpunit/logfile.xml"/>
<log type="testdox-html" target="../build/phpunit/testdox.html"/>
<log type="testdox-text" target="../build/phpunit/testdox.txt"/>
</logging>
<filter>
<whitelist processUncoveredFilesFromWhitelist="false">
<directory suffix=".php">../</directory>
</include>
<exclude>
<directory suffix=".php">../vendor/</directory>
<directory suffix=".php">../test/</directory>
<directory suffix=".php">../src/Layout/</directory>
<directory suffix=".php">../src/Config/</directory>
</exclude>
</coverage>
<testsuites>
<testsuite name="Core Suite">
<directory>./</directory>
</testsuite>
</testsuites>
</whitelist>
</filter>
</phpunit>

View File

@ -31,7 +31,7 @@
* @link http://techfuze.net/fuzeworks
* @since Version 1.2.0
*
* @version Version 1.3.0
* @version Version 1.2.0
*/
namespace Application\Plugin;
use FuzeWorks\iPluginHeader;
@ -48,7 +48,7 @@ class TestGetPluginMethodHeader implements iPluginHeader
{
}
public function getPlugin(): string
public function getPlugin()
{
return 'test_string';
}