farconada / helpers-bundle
辅助包,Fer风格
Requires
README
包含常用类和元素的库
功能
BodyListener,转换请求JSON
如果发送JSON请求,则将请求体转换为Symfony参数。
ParamConverter,从参数创建命令
从一个带有参数的请求构建一个Command类型的对象。
转换器名为 "array2command_converter"。选项
- "param":JSON中的参数名称或 "_root"(如果考虑整个JSON对象从根开始)。
- "include_route_params" [true|false],如果为true,则将请求参数和路由参数进行数组合并。
转换器还会在命令类型的对象上执行验证器,如果存在错误,则抛出 ValidationException 类型的异常。
/**
* @Route(path="/test/{id}")
* @ParamConverter("productCommand", class="AppBundle\Command\Message\NewProduct", options={"param": "_root", "include_route_params": true}, converter="array2command_converter")
*/
public function testAction($productCommand)
{
dump($productCommand);
}
约束验证器:ChoiceFromConfig
几乎与Symfony的Choice验证器相同,但从中提取可能的选项来自parameters.yml配置。
use Fer\HelpersBundle\Validator\Constraints as CustomAssert;
/**
* @Assert\NotBlank()
* @CustomAssert\ChoiceFromConfig(configEntry="project.authors")
*/
public $person;
它们是Symfony的Choice选项,但"choices"改为"configEntry",它必须指向参数中的数组。
project.authors:
- fernando
- fran
TbbcRestUtil ValidationErrorFactory
如果已配置TbbcRestUtil包,则可以使用 ValidationErrorFactory 类,该类从 ValidationException 类型的异常创建一个易于在JSON中显示的Error Response。
tbbc_rest_util:
error:
use_bundled_factories: true
exception_mapping:
Array2CommandConverterException:
class: "Fer\\HelpersBundle\\Exception\\Array2CommandConverterException"
factory: validation_errors
http_status_code: 400
error_code: 400101
error_message: "Invalid input"
error_more_info_url: ""
特性
ClassToArrayTrait
定义一个受保护的方法 protected classToArray(),它返回一个包含类属性及其值的关联数组。
ArrayToPropertiesTrait
定义一个受保护的方法 protected arrayToProperties($dataArray),它接受一个关联数组并将值分配给类的属性。
控制器
####CsrfController
用于发布一个URL,在该URL上生成一个CSRF token /csrf/{intention} 响应是包含值和意图的JSON。
Csrf Annotation
检查action的CSRF token
/**
* @Csrf(intention="form")
* @Route(path="/test/{id}")
* @ParamConverter("productCommand", class="AppBundle\Command\Message\NewProduct", options={"param": "_root", "include_route_params": true}, converter="array2command_converter")
*/
public function testAction($productCommand)
{
return new Response("It works");
}
CQRS
UuidGenerator
UuidGenerator 类定义了一个静态方法 generate(),它返回一个UUID4类型的字符串。
RepositoryInterface
接口定义了Repository必须实现的基本方法
- nextIdentity() 返回一个新的ID对象
- getOfIdentity(AggregateIdInterface $id)) 返回与给定ID对应的对象
- save(AggregateRootInterface $entity) 持久化实体
- remove(AggregateRootInterface $entity) 删除实体
- findAll() 返回实体的整个集合
DefaultDomainEvent
这是一个抽象类,所有领域事件都应该实现它。在构造函数中可以传递一个关联数组来初始化事件的属性。
领域事件必须定义一个常量 EVENT_NAME,该名称将与相应的监听器相关联。
DefaultCommand
这是一个抽象类,所有命令都应该实现它。在构造函数中可以传递一个关联数组来初始化命令的属性。
命令必须定义一个常量 COMMAND_NAME,该名称将与相应的处理器相关联。
定义了一个静态函数 mapProperties($command, $entity),它从实体初始化命令。