g4 / data-repository
PHP库仓库
2.0.1
2023-11-13 07:39 UTC
Requires
- php: >=8.2
- g4/data-mapper: 2.0.*
- g4/identity-map: >=1.3.0
- g4/russian-doll: >=0.4.5
Requires (Dev)
- g4/code-coverage: 1.*
- phpunit/phpunit: 9.*
- squizlabs/php_codesniffer: 3.*
README
data-repository - 用于php的仓库库。
- 使用data-mapper进行数据库存储
- 使用russian-doll进行缓存
- 使用identity-map进行内存中的数据存储
安装
通过composer包管理器安装。在packagist上找到它。
composer require g4/data-repository
依赖项
用法
查看data-mapper文档以获取详细信息 - data-mapper
查看russian-doll文档以获取详细信息 - russian-doll
查看identity-map文档以获取详细信息 - identity-map
use G4\DataMapper\Builder; use G4\DataMapper\Common\Identity; use G4\DataMapper\Common\MappingInterface; use G4\DataMapper\Engine\MySQL\MySQLAdapter; use G4\DataMapper\Engine\MySQL\MySQLClientFactory; use G4\DataRepository\DataRepositoryFactory; use G4\IdentityMap\IdentityMap; use G4\Mcache\McacheFactory; use G4\RussianDoll\Key; use G4\RussianDoll\RussianDoll; // Create instance $dataRepository = (new DataRepositoryFactory( Builder::create()->adapter(new MySQLAdapter(new MySQLClientFactory([]))), new RussianDoll(McacheFactory::createInstance('__driver_name__', [], '__prefix__')), new IdentityMap() ))->create(); // Read flow with: data-mapper's mysql engine, russian-doll and identity-map $identity = new Identity(); $identity ->field('__field_name__') ->equal('__field_value__'); $response = $dataRepository ->setDatasetName('__table_name__') ->setIdentity($identity) ->setIdentityMapKey('__table_name__', '__field_name__', '__field_value__') ->setRussianDollKey(new Key('__table_name__', '__field_name__', '__field_value__')) ->select(); // Write flow (insert, update, upsert, delete) with: data-mapper's mysql engine, russian-doll, and identity-map $identity = new Identity(); $identity ->field('__field_name__') ->equal('__field_value__'); $this->repository ->setDatasetName('__table_name__') ->setMapping(new Mapp())) // must implement mapping ->insert(); $dataRepository ->setDatasetName('__table_name__') ->setIdentity($identity) ->setIdentityMapKey('__table_name__', '__field_name__', '__field_value__') ->setRussianDollKey(new Key('__table_name__', '__field_name__', '__field_value__')) ->setMapping(new Mapp())) // must implement mapping ->update(); $this->repository ->setDatasetName('__table_name__') ->setIdentity($identity) ->setIdentityMapKey('__table_name__', '__field_name__', '__field_value__') ->setRussianDollKey(new Key('__table_name__', '__field_name__', '__field_value__')) ->setMapping(new Mapp())) // must implement mapping ->upsert(); $this->repository ->setDatasetName('__table_name__') ->setIdentity($identity) ->setIdentityMapKey('__table_name__', '__field_name__', '__field_value__') ->setRussianDollKey(new Key('__table_name__', '__field_name__', '__field_value__')) ->delete(); $this->repository ->setDatasetName('__table_name__') ->setIdentityMapKey('__table_name__') ->setRussianDollKey(new Key('__table_name__')) ->query('SELECT * FROM __table_name__'); $this->repository ->setDatasetName('__table_name__') ->setIdentityMapKey('__table_name__', '__field_name__', '__field_value__') ->setRussianDollKey(new Key('__table_name__', '__field_name__', '__field_value__')) ->command('DELETE FROM __table_name__ WHERE __field_name__ = __field_value__');
开发
安装依赖项
$ composer install
运行测试
$ composer unit-test
许可证
(MIT许可证)有关详细信息,请参阅LICENSE文件...