avapardaz / interpreter-manager
任何实体、任何地方的解释器管理器
2.6.0
2024-03-26 10:39 UTC
Requires
- php: >=8.1.0
README
Avapardaz 合约解释器管理器
合约解释器管理器用于处理任何可解释实体的值解释和存储。
安装
通过composer安装
使用以下命令安装包
composer require avapardaz/interpreter-manager
配置
对于任何可解释的实体或模型,执行以下操作
在可解释实体上添加Interpreable接口的包。例如
namespace app\models; use Avapardaz\InterpreterManager; class Contract implements Interpretable { ...
然后,在可解释模板实体上添加InterpreableTemplate接口的包。例如
namespace app\models; use Avapardaz\InterpreterManager; class ContractTemplate implements InterpretableTemplate { ...
最后,创建一个InterpreterManager类,它扩展了InterpreterManager,其中你设置默认配置和覆盖。例如
namespace app\services; use Avapardaz\InterpreterManager; class ContractInterpreterManager extends InterpreterManager {
以下是一个完整的InterpreterManager方法及其类型的示例
<?php namespace common\services; use app\models\Contract; use Avapardaz\InterpreterManager\Adapters\BaseAdapter; use Avapardaz\InterpreterManager\Adapters\ModelAdapter; use Avapardaz\InterpreterManager\InterpreterManager; class ContractInterpreterManager extends InterpreterManager { /** * Extraction pattern * * @var string */ public string $extractionPattern = '/{(.*?)}/'; /** * The interpreter default adapters * * @return array */ protected function defaults(): array { return [ 'adapters' => [ BaseAdapter::class => [ 'variables' => [ [ 'label' => 'Current date', 'key' => 'CURRENT_DATE', 'fillable' => false, 'defaultValue' => '' // can be anything as default or can set in when interpreting via inject ], // ... ] ], ModelAdapter::class => [ 'variables' => [ [ 'label' => 'Contract', 'key' => 'CONTRACT', 'model' => Contract::class, 'attributes' => ['id', 'name'], 'attributeLabels' => [ 'id' => 'ID', 'name' => 'Name', // ... ] ], // ... ] ], // ... ] ]; } }
API 参考
InterpreterManager
使用此类实现的所有操作