mirror of
https://github.com/Karaka-Management/phpOMS.git
synced 2026-02-11 22:38:42 +00:00
Start datastorage restructure
This commit is contained in:
parent
797b1c1f00
commit
b810e72588
|
|
@ -14,8 +14,7 @@ declare(strict_types=1);
|
||||||
|
|
||||||
namespace phpOMS\DataStorage\Cache;
|
namespace phpOMS\DataStorage\Cache;
|
||||||
|
|
||||||
use phpOMS\Config\OptionsInterface;
|
use phpOMS\DataStorage\DataStoragePoolInterface;
|
||||||
use phpOMS\Config\OptionsTrait;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Cache class.
|
* Cache class.
|
||||||
|
|
@ -28,10 +27,8 @@ use phpOMS\Config\OptionsTrait;
|
||||||
* @link http://website.orange-management.de
|
* @link http://website.orange-management.de
|
||||||
* @since 1.0.0
|
* @since 1.0.0
|
||||||
*/
|
*/
|
||||||
class CachePool implements OptionsInterface
|
class CachePool implements DataStoragePoolInterface
|
||||||
{
|
{
|
||||||
use OptionsTrait;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* MemCache instance.
|
* MemCache instance.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,7 @@ use phpOMS\Stdlib\Base\Enum;
|
||||||
/**
|
/**
|
||||||
* Cache type enum.
|
* Cache type enum.
|
||||||
*
|
*
|
||||||
* Possible caching types
|
* Cache types that are supported by the application
|
||||||
*
|
*
|
||||||
* @package phpOMS\DataStorage\Cache
|
* @package phpOMS\DataStorage\Cache
|
||||||
* @license OMS License 1.0
|
* @license OMS License 1.0
|
||||||
|
|
@ -28,11 +28,8 @@ use phpOMS\Stdlib\Base\Enum;
|
||||||
*/
|
*/
|
||||||
abstract class CacheType extends Enum
|
abstract class CacheType extends Enum
|
||||||
{
|
{
|
||||||
/* public */ const _INT = 0; /* Data is integer */
|
/* public */ const FILE = 'file';
|
||||||
/* public */ const _STRING = 1; /* Data is string */
|
/* public */ const MEMCACHED = 'sqlite';
|
||||||
/* public */ const _ARRAY = 2; /* Data is array */
|
/* public */ const REDIS = 'redis';
|
||||||
/* public */ const _SERIALIZABLE = 3; /* Data is object */
|
/* public */ const WINCACHE = 'win';
|
||||||
/* public */ const _FLOAT = 4; /* Data is float */
|
|
||||||
/* public */ const _BOOL = 5; /* Data is bool */
|
|
||||||
/* public */ const _JSONSERIALIZABLE = 6;
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
38
DataStorage/Cache/Connection/CacheValueType.php
Normal file
38
DataStorage/Cache/Connection/CacheValueType.php
Normal file
|
|
@ -0,0 +1,38 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Orange Management
|
||||||
|
*
|
||||||
|
* PHP Version 7.1
|
||||||
|
*
|
||||||
|
* @package phpOMS\DataStorage\Cache\Connection
|
||||||
|
* @copyright Dennis Eichhorn
|
||||||
|
* @license OMS License 1.0
|
||||||
|
* @version 1.0.0
|
||||||
|
* @link http://website.orange-management.de
|
||||||
|
*/
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace phpOMS\DataStorage\Cache\Connection;
|
||||||
|
|
||||||
|
use phpOMS\Stdlib\Base\Enum;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Cache type enum.
|
||||||
|
*
|
||||||
|
* Possible caching types
|
||||||
|
*
|
||||||
|
* @package phpOMS\DataStorage\Cache\Connection
|
||||||
|
* @license OMS License 1.0
|
||||||
|
* @link http://website.orange-management.de
|
||||||
|
* @since 1.0.0
|
||||||
|
*/
|
||||||
|
abstract class CacheValueType 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;
|
||||||
|
}
|
||||||
161
DataStorage/Cache/Connection/ConnectionAbstract.php
Normal file
161
DataStorage/Cache/Connection/ConnectionAbstract.php
Normal file
|
|
@ -0,0 +1,161 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Orange Management
|
||||||
|
*
|
||||||
|
* PHP Version 7.1
|
||||||
|
*
|
||||||
|
* @package phpOMS\DataStorage\Cache\Connection
|
||||||
|
* @copyright Dennis Eichhorn
|
||||||
|
* @license OMS License 1.0
|
||||||
|
* @version 1.0.0
|
||||||
|
* @link http://website.orange-management.de
|
||||||
|
*/
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace phpOMS\DataStorage\Cache\Connection;
|
||||||
|
|
||||||
|
use phpOMS\DataStorage\Cache\CacheStatus;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Cache handler.
|
||||||
|
*
|
||||||
|
* Handles the cache connection.
|
||||||
|
* Implementing wrapper functions for multiple caches is planned (far away).
|
||||||
|
*
|
||||||
|
* @package phpOMS\DataStorage\Cache\Connection
|
||||||
|
* @license OMS License 1.0
|
||||||
|
* @link http://website.orange-management.de
|
||||||
|
* @since 1.0.0
|
||||||
|
*/
|
||||||
|
abstract class ConnectionAbstract implements ConnectionInterface
|
||||||
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Connection object.
|
||||||
|
*
|
||||||
|
* This can be used externally to define queries and execute them.
|
||||||
|
*
|
||||||
|
* @var ConnectionInterface
|
||||||
|
* @since 1.0.0
|
||||||
|
*/
|
||||||
|
private $con = null;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Database prefix.
|
||||||
|
*
|
||||||
|
* The database prefix name for unique table names
|
||||||
|
*
|
||||||
|
* @var string
|
||||||
|
* @since 1.0.0
|
||||||
|
*/
|
||||||
|
public $prefix = '';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Database data.
|
||||||
|
*
|
||||||
|
* @var string[]
|
||||||
|
* @since 1.0.0
|
||||||
|
*/
|
||||||
|
protected $dbdata = null;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Database type.
|
||||||
|
*
|
||||||
|
* @var string
|
||||||
|
* @since 1.0.0
|
||||||
|
*/
|
||||||
|
protected $type = 'undefined';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Database status.
|
||||||
|
*
|
||||||
|
* @var int
|
||||||
|
* @since 1.0.0
|
||||||
|
*/
|
||||||
|
protected $status = CacheStatus::INACTIVE;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function getType() : string
|
||||||
|
{
|
||||||
|
return $this->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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
*
|
*
|
||||||
* PHP Version 7.1
|
* PHP Version 7.1
|
||||||
*
|
*
|
||||||
* @package phpOMS\DataStorage\Cache
|
* @package phpOMS\DataStorage\Cache\Connection
|
||||||
* @copyright Dennis Eichhorn
|
* @copyright Dennis Eichhorn
|
||||||
* @license OMS License 1.0
|
* @license OMS License 1.0
|
||||||
* @version 1.0.0
|
* @version 1.0.0
|
||||||
|
|
@ -12,12 +12,14 @@
|
||||||
*/
|
*/
|
||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace phpOMS\DataStorage\Cache;
|
namespace phpOMS\DataStorage\Cache\Connection;
|
||||||
|
|
||||||
|
use phpOMS\DataStorage\Cache\CacheStatus;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Cache connection factory.
|
* Cache connection factory.
|
||||||
*
|
*
|
||||||
* @package phpOMS\DataStorage\Cache
|
* @package phpOMS\DataStorage\Cache\Connection
|
||||||
* @license OMS License 1.0
|
* @license OMS License 1.0
|
||||||
* @link http://website.orange-management.de
|
* @link http://website.orange-management.de
|
||||||
* @since 1.0.0
|
* @since 1.0.0
|
||||||
|
|
@ -40,19 +42,25 @@ class CacheFactory
|
||||||
*
|
*
|
||||||
* Overwrites current connection if existing
|
* 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
|
* @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
|
* @since 1.0.0
|
||||||
*/
|
*/
|
||||||
public static function create(array $cacheData) : CacheInterface
|
public static function create(array $cacheData) : CacheInterface
|
||||||
{
|
{
|
||||||
switch ($cacheData['type']) {
|
switch ($cacheData['type']) {
|
||||||
case 'file':
|
case CacheStatus::FILE:
|
||||||
return new FileCache($cacheData['path']);
|
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:
|
default:
|
||||||
throw new \InvalidArgumentException('Cache "' . $cacheData['type'] . '" is not supported.');
|
throw new \InvalidArgumentException('Cache "' . $cacheData['type'] . '" is not supported.');
|
||||||
}
|
}
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
*
|
*
|
||||||
* PHP Version 7.1
|
* PHP Version 7.1
|
||||||
*
|
*
|
||||||
* @package phpOMS\DataStorage\Cache
|
* @package phpOMS\DataStorage\Cache\Connection
|
||||||
* @copyright Dennis Eichhorn
|
* @copyright Dennis Eichhorn
|
||||||
* @license OMS License 1.0
|
* @license OMS License 1.0
|
||||||
* @version 1.0.0
|
* @version 1.0.0
|
||||||
|
|
@ -12,19 +12,19 @@
|
||||||
*/
|
*/
|
||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace phpOMS\DataStorage\Cache;
|
namespace phpOMS\DataStorage\Cache\Connection;
|
||||||
|
|
||||||
use phpOMS\Stdlib\Base\Exception\InvalidEnumValue;
|
use phpOMS\Stdlib\Base\Exception\InvalidEnumValue;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Cache interface.
|
* Cache interface.
|
||||||
*
|
*
|
||||||
* @package phpOMS\DataStorage\Cache
|
* @package phpOMS\DataStorage\Cache\Connection
|
||||||
* @license OMS License 1.0
|
* @license OMS License 1.0
|
||||||
* @link http://website.orange-management.de
|
* @link http://website.orange-management.de
|
||||||
* @since 1.0.0
|
* @since 1.0.0
|
||||||
*/
|
*/
|
||||||
interface CacheInterface
|
interface ConnectionInterface extends DataStorageConnectionInterface
|
||||||
{
|
{
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
*
|
*
|
||||||
* PHP Version 7.1
|
* PHP Version 7.1
|
||||||
*
|
*
|
||||||
* @package phpOMS\DataStorage\Cache
|
* @package phpOMS\DataStorage\Cache\Connection
|
||||||
* @copyright Dennis Eichhorn
|
* @copyright Dennis Eichhorn
|
||||||
* @license OMS License 1.0
|
* @license OMS License 1.0
|
||||||
* @version 1.0.0
|
* @version 1.0.0
|
||||||
|
|
@ -12,7 +12,7 @@
|
||||||
*/
|
*/
|
||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace phpOMS\DataStorage\Cache;
|
namespace phpOMS\DataStorage\Cache\Connection;
|
||||||
|
|
||||||
use phpOMS\Stdlib\Base\Exception\InvalidEnumValue;
|
use phpOMS\Stdlib\Base\Exception\InvalidEnumValue;
|
||||||
use phpOMS\System\File\Local\Directory;
|
use phpOMS\System\File\Local\Directory;
|
||||||
|
|
@ -23,12 +23,12 @@ use phpOMS\System\File\Local\File;
|
||||||
*
|
*
|
||||||
* PHP Version 7.1
|
* PHP Version 7.1
|
||||||
*
|
*
|
||||||
* @package phpOMS\DataStorage\Cache
|
* @package phpOMS\DataStorage\Cache\Connection
|
||||||
* @license OMS License 1.0
|
* @license OMS License 1.0
|
||||||
* @link http://website.orange-management.de
|
* @link http://website.orange-management.de
|
||||||
* @since 1.0.0
|
* @since 1.0.0
|
||||||
*/
|
*/
|
||||||
class FileCache implements CacheInterface
|
class FileCache extends ConnectionAbstract
|
||||||
{
|
{
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
*
|
*
|
||||||
* PHP Version 7.1
|
* PHP Version 7.1
|
||||||
*
|
*
|
||||||
* @package phpOMS\DataStorage\Cache
|
* @package phpOMS\DataStorage\Cache\Connection
|
||||||
* @copyright Dennis Eichhorn
|
* @copyright Dennis Eichhorn
|
||||||
* @license OMS License 1.0
|
* @license OMS License 1.0
|
||||||
* @version 1.0.0
|
* @version 1.0.0
|
||||||
|
|
@ -12,17 +12,17 @@
|
||||||
*/
|
*/
|
||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace phpOMS\DataStorage\Cache;
|
namespace phpOMS\DataStorage\Cache\Connection;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Memcache class.
|
* Memcache class.
|
||||||
*
|
*
|
||||||
* @package phpOMS\DataStorage\Cache
|
* @package phpOMS\DataStorage\Cache\Connection
|
||||||
* @license OMS License 1.0
|
* @license OMS License 1.0
|
||||||
* @link http://website.orange-management.de
|
* @link http://website.orange-management.de
|
||||||
* @since 1.0.0
|
* @since 1.0.0
|
||||||
*/
|
*/
|
||||||
class MemCached implements CacheInterface
|
class MemCached extends ConnectionAbstract
|
||||||
{
|
{
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
*
|
*
|
||||||
* PHP Version 7.1
|
* PHP Version 7.1
|
||||||
*
|
*
|
||||||
* @package phpOMS\DataStorage\Cache
|
* @package phpOMS\DataStorage\Cache\Connection
|
||||||
* @copyright Dennis Eichhorn
|
* @copyright Dennis Eichhorn
|
||||||
* @license OMS License 1.0
|
* @license OMS License 1.0
|
||||||
* @version 1.0.0
|
* @version 1.0.0
|
||||||
|
|
@ -12,17 +12,17 @@
|
||||||
*/
|
*/
|
||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace phpOMS\DataStorage\Cache;
|
namespace phpOMS\DataStorage\Cache\Connection;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Null cache class.
|
* Null cache class.
|
||||||
*
|
*
|
||||||
* @package phpOMS\DataStorage\Cache
|
* @package phpOMS\DataStorage\Cache\Connection
|
||||||
* @license OMS License 1.0
|
* @license OMS License 1.0
|
||||||
* @link http://website.orange-management.de
|
* @link http://website.orange-management.de
|
||||||
* @since 1.0.0
|
* @since 1.0.0
|
||||||
*/
|
*/
|
||||||
class NullCache implements CacheInterface
|
class NullCache extends ConnectionAbstract
|
||||||
{
|
{
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
*
|
*
|
||||||
* PHP Version 7.1
|
* PHP Version 7.1
|
||||||
*
|
*
|
||||||
* @package phpOMS\DataStorage\Cache
|
* @package phpOMS\DataStorage\Cache\Connection
|
||||||
* @copyright Dennis Eichhorn
|
* @copyright Dennis Eichhorn
|
||||||
* @license OMS License 1.0
|
* @license OMS License 1.0
|
||||||
* @version 1.0.0
|
* @version 1.0.0
|
||||||
|
|
@ -12,19 +12,19 @@
|
||||||
*/
|
*/
|
||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace phpOMS\DataStorage\Cache;
|
namespace phpOMS\DataStorage\Cache\Connection;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* RedisCache class.
|
* RedisCache class.
|
||||||
*
|
*
|
||||||
* PHP Version 5.6
|
* PHP Version 5.6
|
||||||
*
|
*
|
||||||
* @package phpOMS\DataStorage\Cache
|
* @package phpOMS\DataStorage\Cache\Connection
|
||||||
* @license OMS License 1.0
|
* @license OMS License 1.0
|
||||||
* @link http://website.orange-management.de
|
* @link http://website.orange-management.de
|
||||||
* @since 1.0.0
|
* @since 1.0.0
|
||||||
*/
|
*/
|
||||||
class RedisCache implements CacheInterface
|
class RedisCache extends ConnectionAbstract
|
||||||
{
|
{
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
*
|
*
|
||||||
* PHP Version 7.1
|
* PHP Version 7.1
|
||||||
*
|
*
|
||||||
* @package phpOMS\DataStorage\Cache
|
* @package phpOMS\DataStorage\Cache\Connection
|
||||||
* @copyright Dennis Eichhorn
|
* @copyright Dennis Eichhorn
|
||||||
* @license OMS License 1.0
|
* @license OMS License 1.0
|
||||||
* @version 1.0.0
|
* @version 1.0.0
|
||||||
|
|
@ -12,19 +12,19 @@
|
||||||
*/
|
*/
|
||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace phpOMS\DataStorage\Cache;
|
namespace phpOMS\DataStorage\Cache\Connection;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* WinCache class.
|
* WinCache class.
|
||||||
*
|
*
|
||||||
* PHP Version 5.6
|
* PHP Version 5.6
|
||||||
*
|
*
|
||||||
* @package phpOMS\DataStorage\Cache
|
* @package phpOMS\DataStorage\Cache\Connection
|
||||||
* @license OMS License 1.0
|
* @license OMS License 1.0
|
||||||
* @link http://website.orange-management.de
|
* @link http://website.orange-management.de
|
||||||
* @since 1.0.0
|
* @since 1.0.0
|
||||||
*/
|
*/
|
||||||
class WinCache implements CacheInterface
|
class WinCache extends ConnectionAbstract
|
||||||
{
|
{
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -1,179 +0,0 @@
|
||||||
<?php
|
|
||||||
/**
|
|
||||||
* Orange Management
|
|
||||||
*
|
|
||||||
* PHP Version 7.1
|
|
||||||
*
|
|
||||||
* @package phpOMS\DataStorage\Cache
|
|
||||||
* @copyright Dennis Eichhorn
|
|
||||||
* @license OMS License 1.0
|
|
||||||
* @version 1.0.0
|
|
||||||
* @link http://website.orange-management.de
|
|
||||||
*/
|
|
||||||
declare(strict_types=1);
|
|
||||||
|
|
||||||
namespace phpOMS\DataStorage\Cache;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Memcache class.
|
|
||||||
*
|
|
||||||
* @package phpOMS\DataStorage\Cache
|
|
||||||
* @license OMS License 1.0
|
|
||||||
* @link http://website.orange-management.de
|
|
||||||
* @since 1.0.0
|
|
||||||
*/
|
|
||||||
class MemCache implements CacheInterface
|
|
||||||
{
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Memcache instance.
|
|
||||||
*
|
|
||||||
* @var \Memcache
|
|
||||||
* @since 1.0.0
|
|
||||||
*/
|
|
||||||
private $memc = null;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Only cache if data is larger than threshold (0-100).
|
|
||||||
*
|
|
||||||
* @var int
|
|
||||||
* @since 1.0.0
|
|
||||||
*/
|
|
||||||
private $threshold = 10;
|
|
||||||
|
|
||||||
private $status;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Constructor.
|
|
||||||
*
|
|
||||||
* @since 1.0.0
|
|
||||||
*/
|
|
||||||
public function __construct()
|
|
||||||
{
|
|
||||||
$this->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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
69
DataStorage/DataStorageConnectionInterface.php
Normal file
69
DataStorage/DataStorageConnectionInterface.php
Normal file
|
|
@ -0,0 +1,69 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Orange Management
|
||||||
|
*
|
||||||
|
* PHP Version 7.1
|
||||||
|
*
|
||||||
|
* @package phpOMS\DataStorage
|
||||||
|
* @copyright Dennis Eichhorn
|
||||||
|
* @license OMS License 1.0
|
||||||
|
* @version 1.0.0
|
||||||
|
* @link http://website.orange-management.de
|
||||||
|
*/
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace phpOMS\DataStorage;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Database connection interface.
|
||||||
|
*
|
||||||
|
* @package phpOMS\DataStorage
|
||||||
|
* @license OMS License 1.0
|
||||||
|
* @link http://website.orange-management.de
|
||||||
|
* @since 1.0.0
|
||||||
|
*/
|
||||||
|
interface DataStorageConnectionInterface
|
||||||
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Connect to datastorage.
|
||||||
|
*
|
||||||
|
* Overwrites current connection if existing
|
||||||
|
*
|
||||||
|
* @param string[] $dbdata the basic datastorage information for establishing a connection
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*
|
||||||
|
* @todo make private
|
||||||
|
*
|
||||||
|
* @since 1.0.0
|
||||||
|
*/
|
||||||
|
public function connect(array $dbdata); /* : void */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the datastorage type.
|
||||||
|
*
|
||||||
|
* @return string
|
||||||
|
*
|
||||||
|
* @since 1.0.0
|
||||||
|
*/
|
||||||
|
public function getType() : string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the datastorage status.
|
||||||
|
*
|
||||||
|
* @return int
|
||||||
|
*
|
||||||
|
* @since 1.0.0
|
||||||
|
*/
|
||||||
|
public function getStatus() : int;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Close datastorage connection.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*
|
||||||
|
* @since 1.0.0
|
||||||
|
*/
|
||||||
|
public function close(); /* : void */
|
||||||
|
}
|
||||||
75
DataStorage/DataStoragePoolInterface.php
Normal file
75
DataStorage/DataStoragePoolInterface.php
Normal file
|
|
@ -0,0 +1,75 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Orange Management
|
||||||
|
*
|
||||||
|
* PHP Version 7.1
|
||||||
|
*
|
||||||
|
* @package phpOMS\DataStorage
|
||||||
|
* @copyright Dennis Eichhorn
|
||||||
|
* @license OMS License 1.0
|
||||||
|
* @version 1.0.0
|
||||||
|
* @link http://website.orange-management.de
|
||||||
|
*/
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace phpOMS\DataStorage;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Datamapper interface.
|
||||||
|
*
|
||||||
|
* DB, Cache, Session
|
||||||
|
*
|
||||||
|
* @package phpOMS\DataStorage
|
||||||
|
* @license OMS License 1.0
|
||||||
|
* @link http://website.orange-management.de
|
||||||
|
* @since 1.0.0
|
||||||
|
*/
|
||||||
|
interface DataStoragePoolInterface
|
||||||
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add connection.
|
||||||
|
*
|
||||||
|
* @param mixed $key Connection key
|
||||||
|
* @param ConnectionInterface $db Connection
|
||||||
|
*
|
||||||
|
* @return bool
|
||||||
|
*
|
||||||
|
* @since 1.0.0
|
||||||
|
*/
|
||||||
|
public function add(string $key, ConnectionInterface $db);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get connection.
|
||||||
|
*
|
||||||
|
* @param mixed $key Connection key
|
||||||
|
*
|
||||||
|
* @return mixed
|
||||||
|
*
|
||||||
|
* @since 1.0.0
|
||||||
|
*/
|
||||||
|
public function get(string $key = '');
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove connection.
|
||||||
|
*
|
||||||
|
* @param mixed $key Connection key
|
||||||
|
*
|
||||||
|
* @return bool
|
||||||
|
*
|
||||||
|
* @since 1.0.0
|
||||||
|
*/
|
||||||
|
public function remove(string $key) : bool;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create connection.
|
||||||
|
*
|
||||||
|
* @param mixed $key Connection key
|
||||||
|
* @param array $config Connection config data
|
||||||
|
*
|
||||||
|
* @return bool
|
||||||
|
*
|
||||||
|
* @since 1.0.0
|
||||||
|
*/
|
||||||
|
public function create($key, array $config) : bool;
|
||||||
|
}
|
||||||
|
|
@ -47,6 +47,8 @@ abstract class ConnectionAbstract implements ConnectionInterface
|
||||||
*
|
*
|
||||||
* The database prefix name for unique table names
|
* The database prefix name for unique table names
|
||||||
*
|
*
|
||||||
|
* @todo: make private? could add huge overhead since function call required
|
||||||
|
*
|
||||||
* @var string
|
* @var string
|
||||||
* @since 1.0.0
|
* @since 1.0.0
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -25,49 +25,8 @@ use phpOMS\DataStorage\Database\Schema\Grammar\Grammar as SchemaGrammar;
|
||||||
* @link http://website.orange-management.de
|
* @link http://website.orange-management.de
|
||||||
* @since 1.0.0
|
* @since 1.0.0
|
||||||
*/
|
*/
|
||||||
interface ConnectionInterface
|
interface ConnectionInterface extends DataStorageConnectionInterface
|
||||||
{
|
{
|
||||||
|
|
||||||
/**
|
|
||||||
* Connect to database.
|
|
||||||
*
|
|
||||||
* Overwrites current connection if existing
|
|
||||||
*
|
|
||||||
* @param string[] $dbdata the basic database information for establishing a connection
|
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*
|
|
||||||
* @since 1.0.0
|
|
||||||
*/
|
|
||||||
public function connect(array $dbdata); /* : void */
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get the database type.
|
|
||||||
*
|
|
||||||
* @return string
|
|
||||||
*
|
|
||||||
* @since 1.0.0
|
|
||||||
*/
|
|
||||||
public function getType() : string;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get the database status.
|
|
||||||
*
|
|
||||||
* @return int
|
|
||||||
*
|
|
||||||
* @since 1.0.0
|
|
||||||
*/
|
|
||||||
public function getStatus() : int;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Close database connection.
|
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*
|
|
||||||
* @since 1.0.0
|
|
||||||
*/
|
|
||||||
public function close(); /* : void */
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return grammar for this connection.
|
* Return grammar for this connection.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -14,6 +14,8 @@ declare(strict_types=1);
|
||||||
|
|
||||||
namespace phpOMS\DataStorage\Database;
|
namespace phpOMS\DataStorage\Database;
|
||||||
|
|
||||||
|
use phpOMS\DataStorage\DataStoragePoolInterface;
|
||||||
|
use phpOMS\DataStorage\DataStorageConnectionInterface;
|
||||||
use phpOMS\DataStorage\Database\Connection\ConnectionAbstract;
|
use phpOMS\DataStorage\Database\Connection\ConnectionAbstract;
|
||||||
use phpOMS\DataStorage\Database\Connection\ConnectionFactory;
|
use phpOMS\DataStorage\Database\Connection\ConnectionFactory;
|
||||||
|
|
||||||
|
|
@ -25,7 +27,7 @@ use phpOMS\DataStorage\Database\Connection\ConnectionFactory;
|
||||||
* @link http://website.orange-management.de
|
* @link http://website.orange-management.de
|
||||||
* @since 1.0.0
|
* @since 1.0.0
|
||||||
*/
|
*/
|
||||||
class DatabasePool
|
class DatabasePool implements DataStoragePoolInterface
|
||||||
{
|
{
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -48,14 +50,14 @@ class DatabasePool
|
||||||
/**
|
/**
|
||||||
* Add database.
|
* Add database.
|
||||||
*
|
*
|
||||||
* @param mixed $key Database key
|
* @param mixed $key Database key
|
||||||
* @param ConnectionAbstract $db Database
|
* @param ConnectionInterface $db Database
|
||||||
*
|
*
|
||||||
* @return bool
|
* @return bool
|
||||||
*
|
*
|
||||||
* @since 1.0.0
|
* @since 1.0.0
|
||||||
*/
|
*/
|
||||||
public function add(string $key, ConnectionAbstract $db) : bool
|
public function add(string $key, ConnectionInterface $db) : bool
|
||||||
{
|
{
|
||||||
if (isset($this->pool[$key])) {
|
if (isset($this->pool[$key])) {
|
||||||
return false;
|
return false;
|
||||||
|
|
@ -71,11 +73,11 @@ class DatabasePool
|
||||||
*
|
*
|
||||||
* @param mixed $key Database key
|
* @param mixed $key Database key
|
||||||
*
|
*
|
||||||
* @return ConnectionAbstract|null
|
* @return ConnectionInterface|null
|
||||||
*
|
*
|
||||||
* @since 1.0.0
|
* @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)) {
|
if ((!empty($key) && !isset($this->pool[$key])) || empty($this->pool)) {
|
||||||
return null;
|
return null;
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
*
|
*
|
||||||
* PHP Version 7.1
|
* PHP Version 7.1
|
||||||
*
|
*
|
||||||
* @package TBD
|
* @package phpOMS\DataStorage\Database
|
||||||
* @copyright Dennis Eichhorn
|
* @copyright Dennis Eichhorn
|
||||||
* @license OMS License 1.0
|
* @license OMS License 1.0
|
||||||
* @version 1.0.0
|
* @version 1.0.0
|
||||||
|
|
@ -21,7 +21,7 @@ use phpOMS\Stdlib\Base\Enum;
|
||||||
*
|
*
|
||||||
* Possible database connection status
|
* Possible database connection status
|
||||||
*
|
*
|
||||||
* @package Framework
|
* @package phpOMS\DataStorage\Database
|
||||||
* @license OMS License 1.0
|
* @license OMS License 1.0
|
||||||
* @link http://website.orange-management.de
|
* @link http://website.orange-management.de
|
||||||
* @since 1.0.0
|
* @since 1.0.0
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
*
|
*
|
||||||
* PHP Version 7.1
|
* PHP Version 7.1
|
||||||
*
|
*
|
||||||
* @package TBD
|
* @package phpOMS\DataStorage\Database
|
||||||
* @copyright Dennis Eichhorn
|
* @copyright Dennis Eichhorn
|
||||||
* @license OMS License 1.0
|
* @license OMS License 1.0
|
||||||
* @version 1.0.0
|
* @version 1.0.0
|
||||||
|
|
@ -21,7 +21,7 @@ use phpOMS\Stdlib\Base\Enum;
|
||||||
*
|
*
|
||||||
* Database types that are supported by the application
|
* Database types that are supported by the application
|
||||||
*
|
*
|
||||||
* @package Framework
|
* @package phpOMS\DataStorage\Database
|
||||||
* @license OMS License 1.0
|
* @license OMS License 1.0
|
||||||
* @link http://website.orange-management.de
|
* @link http://website.orange-management.de
|
||||||
* @since 1.0.0
|
* @since 1.0.0
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user