From b810e725884038ccc258c107b86f3a7eb543d031 Mon Sep 17 00:00:00 2001 From: Dennis Eichhorn Date: Wed, 28 Feb 2018 21:43:29 +0100 Subject: [PATCH] Start datastorage restructure --- DataStorage/Cache/CachePool.php | 7 +- DataStorage/Cache/CacheType.php | 13 +- .../Cache/Connection/CacheValueType.php | 38 ++++ .../Cache/Connection/ConnectionAbstract.php | 161 ++++++++++++++++ .../ConnectionFactory.php} | 20 +- .../ConnectionInterface.php} | 8 +- .../Cache/{ => Connection}/FileCache.php | 8 +- .../Cache/{ => Connection}/MemCached.php | 8 +- .../Cache/{ => Connection}/NullCache.php | 8 +- .../Cache/{ => Connection}/RedisCache.php | 8 +- .../Cache/{ => Connection}/WinCache.php | 8 +- DataStorage/Cache/MemCache.php | 179 ------------------ .../DataStorageConnectionInterface.php | 69 +++++++ DataStorage/DataStoragePoolInterface.php | 75 ++++++++ .../Connection/ConnectionAbstract.php | 2 + .../Connection/ConnectionInterface.php | 43 +---- DataStorage/Database/DatabasePool.php | 14 +- DataStorage/Database/DatabaseStatus.php | 4 +- DataStorage/Database/DatabaseType.php | 4 +- 19 files changed, 403 insertions(+), 274 deletions(-) create mode 100644 DataStorage/Cache/Connection/CacheValueType.php create mode 100644 DataStorage/Cache/Connection/ConnectionAbstract.php rename DataStorage/Cache/{CacheFactory.php => Connection/ConnectionFactory.php} (63%) rename DataStorage/Cache/{CacheInterface.php => Connection/ConnectionInterface.php} (93%) rename DataStorage/Cache/{ => Connection}/FileCache.php (98%) rename DataStorage/Cache/{ => Connection}/MemCached.php (94%) rename DataStorage/Cache/{ => Connection}/NullCache.php (88%) rename DataStorage/Cache/{ => Connection}/RedisCache.php (90%) rename DataStorage/Cache/{ => Connection}/WinCache.php (90%) delete mode 100644 DataStorage/Cache/MemCache.php create mode 100644 DataStorage/DataStorageConnectionInterface.php create mode 100644 DataStorage/DataStoragePoolInterface.php diff --git a/DataStorage/Cache/CachePool.php b/DataStorage/Cache/CachePool.php index a236b543f..01f9bc1ab 100644 --- a/DataStorage/Cache/CachePool.php +++ b/DataStorage/Cache/CachePool.php @@ -14,8 +14,7 @@ declare(strict_types=1); namespace phpOMS\DataStorage\Cache; -use phpOMS\Config\OptionsInterface; -use phpOMS\Config\OptionsTrait; +use phpOMS\DataStorage\DataStoragePoolInterface; /** * Cache class. @@ -28,10 +27,8 @@ use phpOMS\Config\OptionsTrait; * @link http://website.orange-management.de * @since 1.0.0 */ -class CachePool implements OptionsInterface +class CachePool implements DataStoragePoolInterface { - use OptionsTrait; - /** * MemCache instance. * diff --git a/DataStorage/Cache/CacheType.php b/DataStorage/Cache/CacheType.php index 6ad17e073..aed89a287 100644 --- a/DataStorage/Cache/CacheType.php +++ b/DataStorage/Cache/CacheType.php @@ -19,7 +19,7 @@ use phpOMS\Stdlib\Base\Enum; /** * Cache type enum. * - * Possible caching types + * Cache types that are supported by the application * * @package phpOMS\DataStorage\Cache * @license OMS License 1.0 @@ -28,11 +28,8 @@ use phpOMS\Stdlib\Base\Enum; */ abstract class CacheType extends Enum { - /* public */ const _INT = 0; /* Data is integer */ - /* public */ const _STRING = 1; /* Data is string */ - /* public */ const _ARRAY = 2; /* Data is array */ - /* public */ const _SERIALIZABLE = 3; /* Data is object */ - /* public */ const _FLOAT = 4; /* Data is float */ - /* public */ const _BOOL = 5; /* Data is bool */ - /* public */ const _JSONSERIALIZABLE = 6; + /* public */ const FILE = 'file'; + /* public */ const MEMCACHED = 'sqlite'; + /* public */ const REDIS = 'redis'; + /* public */ const WINCACHE = 'win'; } diff --git a/DataStorage/Cache/Connection/CacheValueType.php b/DataStorage/Cache/Connection/CacheValueType.php new file mode 100644 index 000000000..19bb584bd --- /dev/null +++ b/DataStorage/Cache/Connection/CacheValueType.php @@ -0,0 +1,38 @@ +type; + } + + /** + * {@inheritdoc} + */ + public function getStatus() : int + { + return $this->status; + } + + /** + * Get database name. + * + * @return string + * + * @since 1.0.0 + */ + public function getCache() : string + { + return $this->dbdata['database'] ?? ''; + } + + /** + * Get database host. + * + * @return string + * + * @since 1.0.0 + */ + public function getHost() : string + { + return $this->dbdata['host'] ?? ''; + } + + /** + * Get database port. + * + * @return int + * + * @since 1.0.0 + */ + public function getPort() : int + { + return (int) $this->dbdata['port'] ?? 0; + } + + /** + * Get table prefix. + * + * @return string + * + * @since 1.0.0 + */ + public function getPrefix() : string + { + return $this->prefix; + } + + /** + * Object destructor. + * + * Sets the database connection to null + * + * @since 1.0.0 + */ + public function __destruct() + { + $this->close(); + } + + /** + * {@inheritdoc} + */ + public function close() /* : void */ + { + $this->con = null; + $this->status = CacheStatus::INACTIVE; + } +} diff --git a/DataStorage/Cache/CacheFactory.php b/DataStorage/Cache/Connection/ConnectionFactory.php similarity index 63% rename from DataStorage/Cache/CacheFactory.php rename to DataStorage/Cache/Connection/ConnectionFactory.php index 734596169..0c662aca9 100644 --- a/DataStorage/Cache/CacheFactory.php +++ b/DataStorage/Cache/Connection/ConnectionFactory.php @@ -4,7 +4,7 @@ * * PHP Version 7.1 * - * @package phpOMS\DataStorage\Cache + * @package phpOMS\DataStorage\Cache\Connection * @copyright Dennis Eichhorn * @license OMS License 1.0 * @version 1.0.0 @@ -12,12 +12,14 @@ */ declare(strict_types=1); -namespace phpOMS\DataStorage\Cache; +namespace phpOMS\DataStorage\Cache\Connection; + +use phpOMS\DataStorage\Cache\CacheStatus; /** * Cache connection factory. * - * @package phpOMS\DataStorage\Cache + * @package phpOMS\DataStorage\Cache\Connection * @license OMS License 1.0 * @link http://website.orange-management.de * @since 1.0.0 @@ -40,19 +42,25 @@ class CacheFactory * * Overwrites current connection if existing * - * @param string[] $cacheData the basic database information for establishing a connection + * @param string[] $cacheData the basic cache information for establishing a connection * * @return CacheInterface * - * @throws \InvalidArgumentException Throws this exception if the database is not supported. + * @throws \InvalidArgumentException Throws this exception if the cache is not supported. * * @since 1.0.0 */ public static function create(array $cacheData) : CacheInterface { switch ($cacheData['type']) { - case 'file': + case CacheStatus::FILE: return new FileCache($cacheData['path']); + case CacheStatus::REDIS: + return new RedisCache($cacheData); + case CacheStatus::MEMCACHED: + return new MemcachedCache($cacheData); + case CacheStatus::WINCACHE: + return new WinCache($cacheData); default: throw new \InvalidArgumentException('Cache "' . $cacheData['type'] . '" is not supported.'); } diff --git a/DataStorage/Cache/CacheInterface.php b/DataStorage/Cache/Connection/ConnectionInterface.php similarity index 93% rename from DataStorage/Cache/CacheInterface.php rename to DataStorage/Cache/Connection/ConnectionInterface.php index 245110ae7..951ebc5c3 100644 --- a/DataStorage/Cache/CacheInterface.php +++ b/DataStorage/Cache/Connection/ConnectionInterface.php @@ -4,7 +4,7 @@ * * PHP Version 7.1 * - * @package phpOMS\DataStorage\Cache + * @package phpOMS\DataStorage\Cache\Connection * @copyright Dennis Eichhorn * @license OMS License 1.0 * @version 1.0.0 @@ -12,19 +12,19 @@ */ declare(strict_types=1); -namespace phpOMS\DataStorage\Cache; +namespace phpOMS\DataStorage\Cache\Connection; use phpOMS\Stdlib\Base\Exception\InvalidEnumValue; /** * Cache interface. * - * @package phpOMS\DataStorage\Cache + * @package phpOMS\DataStorage\Cache\Connection * @license OMS License 1.0 * @link http://website.orange-management.de * @since 1.0.0 */ -interface CacheInterface +interface ConnectionInterface extends DataStorageConnectionInterface { /** diff --git a/DataStorage/Cache/FileCache.php b/DataStorage/Cache/Connection/FileCache.php similarity index 98% rename from DataStorage/Cache/FileCache.php rename to DataStorage/Cache/Connection/FileCache.php index a48dd7388..ab0de23b5 100644 --- a/DataStorage/Cache/FileCache.php +++ b/DataStorage/Cache/Connection/FileCache.php @@ -4,7 +4,7 @@ * * PHP Version 7.1 * - * @package phpOMS\DataStorage\Cache + * @package phpOMS\DataStorage\Cache\Connection * @copyright Dennis Eichhorn * @license OMS License 1.0 * @version 1.0.0 @@ -12,7 +12,7 @@ */ declare(strict_types=1); -namespace phpOMS\DataStorage\Cache; +namespace phpOMS\DataStorage\Cache\Connection; use phpOMS\Stdlib\Base\Exception\InvalidEnumValue; use phpOMS\System\File\Local\Directory; @@ -23,12 +23,12 @@ use phpOMS\System\File\Local\File; * * PHP Version 7.1 * - * @package phpOMS\DataStorage\Cache + * @package phpOMS\DataStorage\Cache\Connection * @license OMS License 1.0 * @link http://website.orange-management.de * @since 1.0.0 */ -class FileCache implements CacheInterface +class FileCache extends ConnectionAbstract { /** diff --git a/DataStorage/Cache/MemCached.php b/DataStorage/Cache/Connection/MemCached.php similarity index 94% rename from DataStorage/Cache/MemCached.php rename to DataStorage/Cache/Connection/MemCached.php index 343cc9262..403870bb9 100644 --- a/DataStorage/Cache/MemCached.php +++ b/DataStorage/Cache/Connection/MemCached.php @@ -4,7 +4,7 @@ * * PHP Version 7.1 * - * @package phpOMS\DataStorage\Cache + * @package phpOMS\DataStorage\Cache\Connection * @copyright Dennis Eichhorn * @license OMS License 1.0 * @version 1.0.0 @@ -12,17 +12,17 @@ */ declare(strict_types=1); -namespace phpOMS\DataStorage\Cache; +namespace phpOMS\DataStorage\Cache\Connection; /** * Memcache class. * - * @package phpOMS\DataStorage\Cache + * @package phpOMS\DataStorage\Cache\Connection * @license OMS License 1.0 * @link http://website.orange-management.de * @since 1.0.0 */ -class MemCached implements CacheInterface +class MemCached extends ConnectionAbstract { /** diff --git a/DataStorage/Cache/NullCache.php b/DataStorage/Cache/Connection/NullCache.php similarity index 88% rename from DataStorage/Cache/NullCache.php rename to DataStorage/Cache/Connection/NullCache.php index d555b27f2..4239954d2 100644 --- a/DataStorage/Cache/NullCache.php +++ b/DataStorage/Cache/Connection/NullCache.php @@ -4,7 +4,7 @@ * * PHP Version 7.1 * - * @package phpOMS\DataStorage\Cache + * @package phpOMS\DataStorage\Cache\Connection * @copyright Dennis Eichhorn * @license OMS License 1.0 * @version 1.0.0 @@ -12,17 +12,17 @@ */ declare(strict_types=1); -namespace phpOMS\DataStorage\Cache; +namespace phpOMS\DataStorage\Cache\Connection; /** * Null cache class. * - * @package phpOMS\DataStorage\Cache + * @package phpOMS\DataStorage\Cache\Connection * @license OMS License 1.0 * @link http://website.orange-management.de * @since 1.0.0 */ -class NullCache implements CacheInterface +class NullCache extends ConnectionAbstract { /** diff --git a/DataStorage/Cache/RedisCache.php b/DataStorage/Cache/Connection/RedisCache.php similarity index 90% rename from DataStorage/Cache/RedisCache.php rename to DataStorage/Cache/Connection/RedisCache.php index 71d00e6b3..75c119fdf 100644 --- a/DataStorage/Cache/RedisCache.php +++ b/DataStorage/Cache/Connection/RedisCache.php @@ -4,7 +4,7 @@ * * PHP Version 7.1 * - * @package phpOMS\DataStorage\Cache + * @package phpOMS\DataStorage\Cache\Connection * @copyright Dennis Eichhorn * @license OMS License 1.0 * @version 1.0.0 @@ -12,19 +12,19 @@ */ declare(strict_types=1); -namespace phpOMS\DataStorage\Cache; +namespace phpOMS\DataStorage\Cache\Connection; /** * RedisCache class. * * PHP Version 5.6 * - * @package phpOMS\DataStorage\Cache + * @package phpOMS\DataStorage\Cache\Connection * @license OMS License 1.0 * @link http://website.orange-management.de * @since 1.0.0 */ -class RedisCache implements CacheInterface +class RedisCache extends ConnectionAbstract { /** diff --git a/DataStorage/Cache/WinCache.php b/DataStorage/Cache/Connection/WinCache.php similarity index 90% rename from DataStorage/Cache/WinCache.php rename to DataStorage/Cache/Connection/WinCache.php index edc389005..776838507 100644 --- a/DataStorage/Cache/WinCache.php +++ b/DataStorage/Cache/Connection/WinCache.php @@ -4,7 +4,7 @@ * * PHP Version 7.1 * - * @package phpOMS\DataStorage\Cache + * @package phpOMS\DataStorage\Cache\Connection * @copyright Dennis Eichhorn * @license OMS License 1.0 * @version 1.0.0 @@ -12,19 +12,19 @@ */ declare(strict_types=1); -namespace phpOMS\DataStorage\Cache; +namespace phpOMS\DataStorage\Cache\Connection; /** * WinCache class. * * PHP Version 5.6 * - * @package phpOMS\DataStorage\Cache + * @package phpOMS\DataStorage\Cache\Connection * @license OMS License 1.0 * @link http://website.orange-management.de * @since 1.0.0 */ -class WinCache implements CacheInterface +class WinCache extends ConnectionAbstract { /** diff --git a/DataStorage/Cache/MemCache.php b/DataStorage/Cache/MemCache.php deleted file mode 100644 index 16aaf7024..000000000 --- a/DataStorage/Cache/MemCache.php +++ /dev/null @@ -1,179 +0,0 @@ -memc = null; - } - - /** - * Adding server to server pool. - * - * @param mixed $data Server data array - * - * @return void - * - * @since 1.0.0 - */ - public function addServer($data) - { - $this->memc->addServer($data['host'], $data['port'], $data['timeout']); - } - - /** - * {@inheritdoc} - */ - public function set($key, $value, int $expire = -1) /* : void */ - { - $this->memc->set($key, $value, false, $expire); - } - - /** - * {@inheritdoc} - */ - public function add($key, $value, int $expire = -1) : bool - { - return $this->memc->add($key, $value, false, $expire); - } - - /** - * {@inheritdoc} - */ - public function get($key, int $expire = -1) - { - return $this->memc->get($key); - } - - /** - * {@inheritdoc} - */ - public function delete($key, int $expire = -1) : bool - { - $this->memc->delete($key); - } - - /** - * {@inheritdoc} - */ - public function flush(int $expire = 0) : bool - { - $this->memc->flush(); - - return true; - } - - /** - * {@inheritdoc} - */ - public function flushAll() : bool - { - $this->memc->flush(); - - return true; - } - - /** - * {@inheritdoc} - */ - public function replace($key, $value, int $expire = -1) : bool - { - $this->memc->replace($key, $value, false, $expire); - } - - /** - * {@inheritdoc} - */ - public function stats() : array - { - /** @noinspection PhpMethodOrClassCallIsNotCaseSensitiveInspection */ - return $this->memc->getExtendedStats(); - } - - /** - * {@inheritdoc} - */ - public function getThreshold() : int - { - return $this->threshold; - } - - /** - * {@inheritdoc} - */ - public function setStatus(int $status) /* : void */ - { - $this->status = $status; - } - - /** - * Destructor. - * - * @since 1.0.0 - */ - public function __destruct() - { - $this->close(); - } - - /** - * Closing cache. - * - * @return void - * - * @since 1.0.0 - */ - public function close() - { - if ($this->memc !== null) { - $this->memc->close(); - $this->memc = null; - } - } -} diff --git a/DataStorage/DataStorageConnectionInterface.php b/DataStorage/DataStorageConnectionInterface.php new file mode 100644 index 000000000..d2f194212 --- /dev/null +++ b/DataStorage/DataStorageConnectionInterface.php @@ -0,0 +1,69 @@ +pool[$key])) { return false; @@ -71,11 +73,11 @@ class DatabasePool * * @param mixed $key Database key * - * @return ConnectionAbstract|null + * @return ConnectionInterface|null * * @since 1.0.0 */ - public function get(string $key = '') /* : ?ConnectionAbstract */ + public function get(string $key = '') /* : ?ConnectionInterface */ { if ((!empty($key) && !isset($this->pool[$key])) || empty($this->pool)) { return null; diff --git a/DataStorage/Database/DatabaseStatus.php b/DataStorage/Database/DatabaseStatus.php index 96ac53e21..610c9166b 100644 --- a/DataStorage/Database/DatabaseStatus.php +++ b/DataStorage/Database/DatabaseStatus.php @@ -4,7 +4,7 @@ * * PHP Version 7.1 * - * @package TBD + * @package phpOMS\DataStorage\Database * @copyright Dennis Eichhorn * @license OMS License 1.0 * @version 1.0.0 @@ -21,7 +21,7 @@ use phpOMS\Stdlib\Base\Enum; * * Possible database connection status * - * @package Framework + * @package phpOMS\DataStorage\Database * @license OMS License 1.0 * @link http://website.orange-management.de * @since 1.0.0 diff --git a/DataStorage/Database/DatabaseType.php b/DataStorage/Database/DatabaseType.php index 40eb335c1..3217b8eb9 100644 --- a/DataStorage/Database/DatabaseType.php +++ b/DataStorage/Database/DatabaseType.php @@ -4,7 +4,7 @@ * * PHP Version 7.1 * - * @package TBD + * @package phpOMS\DataStorage\Database * @copyright Dennis Eichhorn * @license OMS License 1.0 * @version 1.0.0 @@ -21,7 +21,7 @@ use phpOMS\Stdlib\Base\Enum; * * Database types that are supported by the application * - * @package Framework + * @package phpOMS\DataStorage\Database * @license OMS License 1.0 * @link http://website.orange-management.de * @since 1.0.0