initial commit

This commit is contained in:
ghost 2023-08-09 20:12:41 +03:00
parent fd7fdb416d
commit 38303b10a9
3 changed files with 79 additions and 0 deletions

4
.gitignore vendored Normal file
View file

@ -0,0 +1,4 @@
/.vscode/
/vendor/
composer.lock

15
composer.json Normal file
View file

@ -0,0 +1,15 @@
{
"name": "yggverse/cache",
"description": "Cache tools for PHP applications",
"type": "library",
"require": {
"php": ">=8.1"
},
"license": "MIT",
"autoload": {
"psr-4": {
"Yggverse\\Cache\\": "src/"
}
},
"minimum-stability": "alpha"
}

60
src/Memcached.php Normal file
View file

@ -0,0 +1,60 @@
<?php
declare(strict_types=1);
namespace YGGverse\Cache;
class Memcached {
private $_memcached;
private $_namespace;
private $_timeout;
public function __construct(string $host, int $port, string $namespace, int $timeout)
{
$this->_memcached = new Memcached();
$this->_memcached->addServer($host, $port);
$this->_namespace = $namespace;
$this->_timeout = $timeout;
}
public function get(string $key, mixed $value = null, int $timeout = null) : mixed
{
if (false === $result = $this->_memcached->get($this->_key($key)))
{
if (true === $this->set($key, $value, $timeout))
{
return $value;
}
else
{
return false;
}
}
else
{
return $result;
}
}
public function set(string $key, mixed $value, int $timeout = null)
{
return $this->_memcached->set($this->_key($key), $value, ($timeout ? $timeout : $this->_timeout) + time());
}
public function delete(string $key) : bool
{
return $this->_memcached->delete($this->_key($key));
}
public function flush(int $delay = 60)
{
return $this->_memcached->flush();
}
private function _key(string $key) : string
{
return sprintf('%s.%s', $this->_namespace, $key);
}
}