mpoiriert / business-rule-engine-bundle
可重用库
dev-master
2014-03-27 13:00 UTC
Requires
- php: >=5.3
- mpoiriert/business-rule-engine: *
- symfony/framework-bundle: ~2.4
Requires (Dev)
- phpunit/phpunit: 3.7.*
- symfony/symfony: ~2.4
This package is auto-updated.
Last update: 2024-09-09 13:36:14 UTC
README
将BusinessRuleEngine集成为Symfony捆绑包。
您应该阅读Business Rule Engine文档,以了解如何以及为什么使用它。当前的文档旨在解释如何在symfony中启用、配置它。
<?php // in AppKernel::registerBundles() $bundles = array( // ... new Nucleus\Bundle\BusinessRuleEngineBundle\NucleusBusinessRuleEngineBundle(), // ... );
从那里您可以开始使用BusinessRuleEngine。
服务名为nucleus.business_rule_engine,因此您可以通过服务容器像这样访问它
<?php $businessRuleEngine = $serviceContainer->get('nucleus.business_rule_engine');
或者将其注入到您的服务中。当您引用对象时,请务必使用接口Nucleus\BusinessRuleEngine\IBusinessRuleEngine。
添加服务作为规则
要将服务作为规则添加,您需要标记特定的服务。
<service id="my_namespace.my_module.my_service" class="MyNamespace\MyModule\MyServiceClass"> <tag name="nucleus.business_rule_engine.rule" ruleName="myRuleName" /> </service>
示例使用XML,请参考symfony文档了解如何在YML或PHP中标记。
名为nucleus.business_rule_engine.rule的标记由本捆绑包使用,以确定哪些服务是规则。属性ruleName将是您在调用业务规则引擎时必须引用的。
由于BusinessRuleEngine期望可调用对象作为规则,请确保在您的服务中实现了PHP上的__invoke魔术方法。
<?php namespace MyNamespace\MyModule; class MyServiceClass { /* ... */ public function __invoke($toto) { /* ... do processing ... */ return $result;//The business rule engine expect to receive a boolean value in return } }
在我们的捆绑包中,我们实现了一个ContainerAware的IRuleProvider,因此服务将在您调用规则之前不会被加载。
symfony集成文档