From ab0f9bd445859f8d6591a34a7e5460e76df12b16 Mon Sep 17 00:00:00 2001 From: Payton Bice Date: Tue, 24 Dec 2019 13:25:51 -0600 Subject: [PATCH] Initial commit of Cache namespace --- flextype/cache/AcpuAdapter.php | 19 +++++++++++ flextype/cache/ArrayAdapter.php | 19 +++++++++++ flextype/cache/CacheAdapterInterface.php | 23 +++++++++++++ flextype/cache/FilesystemAdapter.php | 26 +++++++++++++++ flextype/cache/MemcachedAdapter.php | 29 ++++++++++++++++ flextype/cache/RedisAdapter.php | 42 ++++++++++++++++++++++++ flextype/cache/SQLite3Adapter.php | 29 ++++++++++++++++ flextype/cache/WinCacheAdapter.php | 19 +++++++++++ flextype/cache/ZendDataCacheAdapter.php | 19 +++++++++++ 9 files changed, 225 insertions(+) create mode 100644 flextype/cache/AcpuAdapter.php create mode 100644 flextype/cache/ArrayAdapter.php create mode 100644 flextype/cache/CacheAdapterInterface.php create mode 100644 flextype/cache/FilesystemAdapter.php create mode 100644 flextype/cache/MemcachedAdapter.php create mode 100644 flextype/cache/RedisAdapter.php create mode 100644 flextype/cache/SQLite3Adapter.php create mode 100644 flextype/cache/WinCacheAdapter.php create mode 100644 flextype/cache/ZendDataCacheAdapter.php diff --git a/flextype/cache/AcpuAdapter.php b/flextype/cache/AcpuAdapter.php new file mode 100644 index 00000000..aa973566 --- /dev/null +++ b/flextype/cache/AcpuAdapter.php @@ -0,0 +1,19 @@ +flextype = $flextype; + } + + public function getDriver(): object + { + return new AcpuCache(); + } +} diff --git a/flextype/cache/ArrayAdapter.php b/flextype/cache/ArrayAdapter.php new file mode 100644 index 00000000..0be62653 --- /dev/null +++ b/flextype/cache/ArrayAdapter.php @@ -0,0 +1,19 @@ +flextype = $flextype; + } + + public function getDriver(): object + { + return new ArrayCache(); + } +} diff --git a/flextype/cache/CacheAdapterInterface.php b/flextype/cache/CacheAdapterInterface.php new file mode 100644 index 00000000..e634d79a --- /dev/null +++ b/flextype/cache/CacheAdapterInterface.php @@ -0,0 +1,23 @@ +flextype = $flextype; + } + + public function getDriver(): object + { + $cache_directory = PATH['cache'] . '/doctrine/'; + + if (! Filesystem::has($cache_directory)) { + Filesystem::createDir($cache_directory); + } + + return new FilesystemCache($cache_directory); + } +} diff --git a/flextype/cache/MemcachedAdapter.php b/flextype/cache/MemcachedAdapter.php new file mode 100644 index 00000000..2fc7bf4e --- /dev/null +++ b/flextype/cache/MemcachedAdapter.php @@ -0,0 +1,29 @@ +flextype = $flextype; + } + + public function getDriver(): object + { + $memcached = new Memecached(); + $memcached->addServer( + $this->flextype['registry']->get('settings.cache.memcached.server', 'localhost'), + $this->flextype['registry']->get('settings.cache.memcache.port', 11211) + ); + + $driver = new MemcachedCache(); + $driver->setMemcached($memcached); + + return $driver; + } +} diff --git a/flextype/cache/RedisAdapter.php b/flextype/cache/RedisAdapter.php new file mode 100644 index 00000000..e1fe2bec --- /dev/null +++ b/flextype/cache/RedisAdapter.php @@ -0,0 +1,42 @@ +flextype = $flextype; + } + + public function getDriver(): object + { + $redis = new Redis(); + $socket = $this->flextype['registry']->get('settings.cache.redis.socket', false); + $password = $this->flextype['registry']->get('settings.cache.redis.password', false); + + if ($socket) { + $redis->connect($socket); + } else { + $redis->connect( + $this->flextype['registry']->get('settings.cache.redis.server', 'localhost'), + $this->flextype['registry']->get('settings.cache.redis.port', 6379) + ); + } + + // Authenticate with password if set + if ($password && ! $redis->auth($password)) { + throw new RedisException('Redis authentication failed'); + } + + $driver = new RedisCache(); + $driver->setRedis($redis); + + return $driver; + } +} diff --git a/flextype/cache/SQLite3Adapter.php b/flextype/cache/SQLite3Adapter.php new file mode 100644 index 00000000..8e6f220f --- /dev/null +++ b/flextype/cache/SQLite3Adapter.php @@ -0,0 +1,29 @@ +flextype = $flextype; + } + + public function getDriver(): object + { + $cache_directory = PATH['cache'] . '/doctrine/'; + + if (! Filesystem::has($cache_directory)) { + Filesystem::createDir($cache_directory); + } + + $db = new SQLite3($cache_directory . $this->flextype['registry']->get('settings.cache.sqlite3.database', 'flextype') . '.db'); + + return new SQLite3Cache($db, $this->flextype['registry']->get('settings.cache.sqlite3.table', 'flextype')); + } +} diff --git a/flextype/cache/WinCacheAdapter.php b/flextype/cache/WinCacheAdapter.php new file mode 100644 index 00000000..49052e7c --- /dev/null +++ b/flextype/cache/WinCacheAdapter.php @@ -0,0 +1,19 @@ +flextype = $flextype; + } + + public function getDriver(): object + { + return new WinCacheCache(); + } +} diff --git a/flextype/cache/ZendDataCacheAdapter.php b/flextype/cache/ZendDataCacheAdapter.php new file mode 100644 index 00000000..503ca399 --- /dev/null +++ b/flextype/cache/ZendDataCacheAdapter.php @@ -0,0 +1,19 @@ +flextype = $flextype; + } + + public function getDriver(): object + { + return new ZendDataCache(); + } +}