From bf529d83c8adf4961e4e75f4a7a15d2aa971bee8 Mon Sep 17 00:00:00 2001 From: User Date: Mon, 13 Jan 2025 04:44:41 +0300 Subject: [PATCH] 20250113#1 --- .env.dist | 1 + README.md | 2 +- application/base/Domain/AbstractObject.php | 17 ---- application/base/Domain/EntityInterface.php | 18 ---- .../base/Domain/ValueObjectInterface.php | 16 ---- application/base/Repository/.gitkeep | 0 .../Repository/AbstractMysqlRepository.php | 37 -------- .../base/Repository/AbstractRepository.md | 12 --- .../base/Repository/AbstractRepository.php | 93 ------------------- .../base/Repository/RepositoryException.php | 15 --- application/config/container/services.php | 5 +- composer.json | 5 +- 12 files changed, 6 insertions(+), 215 deletions(-) delete mode 100644 application/base/Domain/AbstractObject.php delete mode 100644 application/base/Domain/EntityInterface.php delete mode 100644 application/base/Domain/ValueObjectInterface.php create mode 100644 application/base/Repository/.gitkeep delete mode 100644 application/base/Repository/AbstractMysqlRepository.php delete mode 100644 application/base/Repository/AbstractRepository.md delete mode 100644 application/base/Repository/AbstractRepository.php delete mode 100644 application/base/Repository/RepositoryException.php diff --git a/.env.dist b/.env.dist index 0534fbc..6abe87b 100644 --- a/.env.dist +++ b/.env.dist @@ -21,3 +21,4 @@ PAGE501="/templates/error/501.tpl" # Users environment MYSQL_PARAM='{"host":"host.docker.internal", "user":"***user***", "pass":"***password***","base":"***basename***", "logsEnable":true}' +REDIS_PARAM='{"host":"127.0.0.1","port":6379,"connectTimeout":2.5,"backoff":{"algorithm":1,"base":500,"cap":750}, "database":0, "defaultExpire":300}' diff --git a/README.md b/README.md index efe0a2a..0755bd5 100644 --- a/README.md +++ b/README.md @@ -9,5 +9,5 @@ composer create-project rmphp/skeleton project-name ``` ```bash -composer create-project rmphp/skeleton:"^4.1" project-name +composer create-project rmphp/skeleton:"^4.2" project-name ``` diff --git a/application/base/Domain/AbstractObject.php b/application/base/Domain/AbstractObject.php deleted file mode 100644 index 13a0082..0000000 --- a/application/base/Domain/AbstractObject.php +++ /dev/null @@ -1,17 +0,0 @@ -id)) ? (($this->id instanceof ValueObjectInterface) ? $this->id->get() : $this->id) : null; - } -} diff --git a/application/base/Domain/EntityInterface.php b/application/base/Domain/EntityInterface.php deleted file mode 100644 index b08b2df..0000000 --- a/application/base/Domain/EntityInterface.php +++ /dev/null @@ -1,18 +0,0 @@ -getProperties($object, function ($value){ - return (is_string($value)) ? $this->mysql->escapeStr($value) : $value; - }); - if(static::DEBUG) dd($object, $in, $table); - try { - if (!empty($object->getId()) && !empty($this->mysql->findById($table, $object->getId()))) { - $this->mysql->updateById($table, $in, $object->getId()); - return $object->getId(); - } else { - $this->mysql->insert($table, $in); - return (is_string($object->getId())) ? $object->getId() : $this->mysql->mysql()->insert_id; - } - } catch (\Throwable $throwable) {throw new RepositoryException($throwable->getMessage());} - } -} diff --git a/application/base/Repository/AbstractRepository.md b/application/base/Repository/AbstractRepository.md deleted file mode 100644 index 183e9ef..0000000 --- a/application/base/Repository/AbstractRepository.md +++ /dev/null @@ -1,12 +0,0 @@ -### Создание объекта из массива - -```php -setProperties(array $data) : void -``` - - -### Получение массива из объекта - -```php -getProperties(callable $method = null) : array -``` \ No newline at end of file diff --git a/application/base/Repository/AbstractRepository.php b/application/base/Repository/AbstractRepository.php deleted file mode 100644 index 3e59a43..0000000 --- a/application/base/Repository/AbstractRepository.php +++ /dev/null @@ -1,93 +0,0 @@ -getProperties() as $property) { - $propertyNameSnakeCase = strtolower(preg_replace("'([A-Z])'", "_$1", $property->getName())); - // data[propertyName] ?? data[property_name] ?? null - $value = $data[$property->getName()] ?? $data[$propertyNameSnakeCase] ?? null; - - // если есть внутренний метод (приоритетная обработка) - if(static::$classes[$class]->hasMethod('set'.ucfirst($property->getName()))) $object->{'set'.ucfirst($property->getName())}($value); - // Если тип свойства класс (valueObject) - elseif($property->hasType() && class_exists($property->getType()->getName())) $object->{$property->getName()} = new ($property->getType()->getName())($value); - // если значения не пустое - elseif(isset($value)) $object->{$property->getName()} = $value; - } - return $object; - } - catch (ReflectionException $exception) { - throw new RepositoryException($exception->getMessage()); - } - } - - /** - * @param object $class - * @param callable|null $method - * @return array - */ - public function getProperties(object $class, callable $method = null) : array { - - $objectData = get_object_vars($class); - foreach ($objectData as $fieldName => $value) - { - // to option_id - $fieldNameSnakeCase = strtolower(preg_replace("'([A-Z])'", "_$1", $fieldName)); - - // если есть внутренний метод (приоритетная обработка) - if(method_exists($this, 'get'.ucfirst($fieldName))) { - $out[$fieldNameSnakeCase] = $this->{'get'.ucfirst($fieldName)}($value); - } - // если тип свойства класс (valueObject) - elseif($value instanceof ValueObjectInterface && null !== $value->get()) { - $out[$fieldNameSnakeCase] = $value->get(); - } - // если передана callable функция через которую нужно пропустить все элементы - elseif(isset($method) && !is_array($value) && !is_object($value)) { - $out[$fieldNameSnakeCase] = $method($value); - } - // если это логическое значение - elseif(is_bool($value)){ - $out[$fieldNameSnakeCase] = (int) $value; - } - // если это дробное число - elseif(is_float($value)) { - $out[$fieldNameSnakeCase] = $value; - } - // если это целое число - elseif(is_int($value)) { - $out[$fieldNameSnakeCase] = $value; - } - // если это строка - elseif(is_string($value)) { - $out[$fieldNameSnakeCase] = $value; - } - - } - return $out ?? []; - } -} diff --git a/application/base/Repository/RepositoryException.php b/application/base/Repository/RepositoryException.php deleted file mode 100644 index c1df0fe..0000000 --- a/application/base/Repository/RepositoryException.php +++ /dev/null @@ -1,15 +0,0 @@ -data = $data; - } -} diff --git a/application/config/container/services.php b/application/config/container/services.php index 43e29ef..c31679b 100644 --- a/application/config/container/services.php +++ b/application/config/container/services.php @@ -2,14 +2,11 @@ use Rmphp\Cache\Cache; use Rmphp\Cache\CacheInterface; -use Rmphp\Session\Session; -use Rmphp\Session\SessionInterface; use Rmphp\Storage\Mysql\MysqlStorage; use Rmphp\Storage\Mysql\MysqlStorageInterface; return [ MysqlStorageInterface::class => DI\create(MysqlStorage::class)->constructor(json_decode(getenv("MYSQL_PARAM"), true)), - SessionInterface::class => DI\create(Session::class)->constructor(), CacheInterface::class => DI\create(Cache::class)->constructor("../var/cache"), 'App\*\Domain\Repository\*RepositoryInterface' => DI\autowire('App\*\Infrastructure\Repository\*Repository'), -]; \ No newline at end of file +]; diff --git a/composer.json b/composer.json index e0dfbdf..13f4e00 100644 --- a/composer.json +++ b/composer.json @@ -14,10 +14,11 @@ "ramsey/uuid": "^4.7", "rmphp/cache-file": "^1.0", "rmphp/content": "^3.1", - "rmphp/kernel": "^4.1", + "rmphp/kernel": "^5.0", "rmphp/router": "^1.2", "rmphp/session": "^1.0", - "rmphp/storage": "^3.1", + "rmphp/redis": "^1.0", + "rmphp/storage": "^4.0", "symfony/dotenv": "^6.2" }, "autoload": {