cycle / schema-provider
Cycle ORM 模式提供者
Requires
- php: >=8.0
- cycle/orm: ^2.0
- cycle/schema-renderer: ^1.2
- psr/container: ^1.0 || ^2.0
- psr/simple-cache: ^2.0 || ^3.0
- spiral/files: ^2.14 || ^3.11
- webmozart/glob: ^4.6
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.48
- phpunit/phpunit: ^9.6
- roave/security-advisories: dev-latest
- vimeo/psalm: ^4.30.0 || ^5.21
- yiisoft/test-support: ^3.0
README
Cycle ORM 使用实现 Cycle\ORM\SchemaInterface
接口的对象作为模式。此模式可以从具有特定结构的 PHP 数组构建。本包提供从不同来源构建模式的全套解决方案。它包括一组实现 Cycle\Schema\Provider\SchemaProviderInterface
接口的提供者。这些提供者被分组在 Cycle\Schema\Provider\Support\SchemaProviderPipeline
中。
此管道按预定顺序依次执行提供者的操作。如果其中一个提供者返回了模式,则后续提供者不会执行。
要求
确保您的服务器已配置以下 PHP 版本和扩展
- PHP >=8.0
安装
您可以通过 Composer 安装此包
composer require cycle/schema-provider
使用
让我们通过使用此包创建模式的简单示例来探索。例如,我们有两个 php 文件 schema1.php 和 schema2.php 中的模式。在这种情况下,我们可以使用 Cycle\Schema\Provider\FromFilesSchemaProvider
从多个文件构建模式。在提供者之前,我们可以添加一个 Cycle\Schema\Provider\SimpleCacheSchemaProvider
,它能够缓存模式。在后续的模式构建中,此提供者从缓存中检索模式,从而无需使用 FromFilesSchemaProvider
来构建模式。
use Cycle\ORM\Schema; use Cycle\Schema\Provider\FromFilesSchemaProvider; use Cycle\Schema\Provider\SimpleCacheSchemaProvider; use Cycle\Schema\Provider\Support\SchemaProviderPipeline; $pipeline = (new SchemaProviderPipeline($container))->withConfig([ SimpleCacheSchemaProvider::class => SimpleCacheSchemaProvider::config(key: 'cycle-schema'), FromFilesSchemaProvider::class => FromFilesSchemaProvider::config(files: [ 'runtime/schema1.php', 'runtime/schema2.php', ]), ]); $schema = new Schema($pipeline->read());
SimpleCacheSchemaProvider
需要实现 Psr\SimpleCache\CacheInterface
的实现,这必须在您的容器中定义。它使用此接口来检索和存储模式数组。或者,您可以使用 Cycle\Schema\Provider\PhpFileSchemaProvider
,它可以将模式保存到 PHP 文件中。
从不同提供者构建 DB 模式
要合并从不同提供者获得的模式部分,请使用 Cycle\Schema\Provider\MergeSchemaProvider
。
use Cycle\ORM\Schema; use Cycle\Schema\Provider\FromFilesSchemaProvider; use Cycle\Schema\Provider\SimpleCacheSchemaProvider; use Cycle\Schema\Provider\MergeSchemaProvider; use Cycle\Schema\Provider\Support\SchemaProviderPipeline; $pipeline = (new SchemaProviderPipeline($container))->withConfig([ SimpleCacheSchemaProvider::class => SimpleCacheSchemaProvider::config(key: 'cycle-schema'), MergeSchemaProvider::class => [ FromFilesSchemaProvider::class => FromFilesSchemaProvider::config(files: [ 'runtime/schema1.php', 'runtime/schema2.php', ]), CustomSchemaProvider::class => ['some' => 'config'], ], ]); $schema = new Schema($pipeline->read());
许可证
MIT 许可证(MIT)。有关更多信息,请参阅 LICENSE
。由 Spiral Scout 维护。