创建一个自定义类型猜测者
编辑该页面警告:你浏览的文档欧宝官网下载appob娱乐下载Symfony 2.6,不再维护。
读这个页面的更新版本Symfob娱乐下载ony 6.3(当前的稳定版本)。
创建一个自定义类型猜测者
表单组件可以猜一个表单字段的类型和一些选项使用类型的猜测。组件已包括一种猜测者使用断言验证组件,但你也可以添加您自己的自定义类型的猜测。
创建一个PHPDoc类型猜测者
在本节中,您将构建一个猜测者,从PHPDoc中读取信息字段的属性。首先,您需要创建一个实现类FormTypeGuesserInterface。这个接口需要4种方法:
- guessType ()——试图猜测一个字段的类型;
- guessRequired ()——试图猜测的价值要求选择;
- guessMaxLength ()——试图猜测的价值max_length选择;
- guessPattern ()——试图猜测的价值模式选择。
首先创建类和这些方法。接下来,您将了解如何填满每一个。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
名称空间Acme\形式;使用ob娱乐下载\组件\形式\FormTypeGuesserInterface;类PHPDocTypeGuesser实现了FormTypeGuesserInterface{公共函数guessType(美元类,美元财产){}公共函数guessRequired(美元类,美元财产){}公共函数guessMaxLength(美元类,美元财产){}公共函数guessPattern(美元类,美元财产){}}
猜测的类型
猜一个类型时,方法返回的一个实例TypeGuess或不确定类型猜测者不能猜类型。
的TypeGuess
构造函数需要3个选项:
- 类型名称(之一表单类型);
- 附加选项(例如,当类型
实体
,您还需要设置类
选项)。如果没有类型是猜到了,这应该被设置为一个空数组; - 信心,猜类型是正确的。这可以是一个常量猜一猜类:
LOW_CONFIDENCE
,MEDIUM_CONFIDENCE
,HIGH_CONFIDENCE
,VERY_HIGH_CONFIDENCE
。毕竟类型猜测已经执行,使用最高的信心。
与这方面的知识,你可以很容易地实现guessType
的方法PHPDocTypeGuesser
:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17日18 19 20 21日22日23日24日25日26日27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
名称空间Acme\形式;使用ob娱乐下载\组件\形式\猜一猜\猜一猜;使用ob娱乐下载\组件\形式\猜一猜\TypeGuess;类PHPDocTypeGuesser实现了FormTypeGuesserInterface{公共函数guessType(美元类,美元财产){美元注释=美元这- >readPhpDocAnnotations (美元类,美元财产);如果(!收取(美元注释(“var”))){返回;/ /想什么如果@var注释不可用}/ /否则,基地在@var注释类型开关(美元注释(“var”){情况下“字符串”:/ /有一个高的类型是文本时的信心/ /使用@var字符串返回新TypeGuess (“文本”,数组(),猜::HIGH_CONFIDENCE);情况下“int”:情况下“整数”:/ /整数也可以是一个实体的id或复选框(0或1)返回新TypeGuess (“整数”,数组(),猜::MEDIUM_CONFIDENCE);情况下“浮”:情况下“双”:情况下“真实”的:返回新TypeGuess (“数量”,数组(),猜::MEDIUM_CONFIDENCE);情况下“布尔”:情况下“bool”:返回新TypeGuess (“复选框”,数组(),猜::HIGH_CONFIDENCE);默认的:/ /有一个非常低的信心,这一个是正确的返回新TypeGuess (“文本”,数组(),猜::LOW_CONFIDENCE);}}受保护的函数readPhpDocAnnotations(美元类,美元财产){美元reflectionProperty=新\ ReflectionProperty (美元类,美元财产);美元phpdoc=美元reflectionProperty- >getDocComment ();/ / $ phpdoc解析成一个数组:/ /数组('类型' = > '字符串','因为' = > ' 1.0 ')美元phpdocTags=……;返回美元phpdocTags;}}
这种猜测者现在可以猜的字段类型属性如果PHPdoc !
猜测字段选项
另一个方法(3guessMaxLength
,guessRequired
和guessPattern
)返回一个ValueGuess实例的价值选择。该构造函数有两个参数:
- 的价值选择;
- 猜的信心值是正确的(使用的常量
猜一猜
类)。
零
猜是当你相信的价值不应设置的选项。
谨慎
你应该非常小心使用guessPattern
方法。类型是一个浮动的时候,你不能使用它来确定浮动的最大或最小值(例如,你想要一个大于浮动5
,4.512313
是无效的,但长度(4.512314)> (5)
是,所以模式会成功)。在这种情况下,应该设置为值零
与一个MEDIUM_CONFIDENCE
。
注册一个类型猜测者
您需要做的最后一件事是猜测者通过使用注册您的自定义类型addTypeGuesser ()或addTypeGuessers ():
1 2 3 4 5 6 7 8 9
使用ob娱乐下载\组件\形式\形式;使用Acme\形式\PHPDocTypeGuesser;美元formFactory=形式::createFormFactoryBuilder ()/ /……- >addTypeGuesser (新PHPDocTypeGuesser ())- >getFormFactory ();/ /……
请注意
当你使用Symfony框架,您需要ob娱乐下载注册类型猜测者和标签form.type_guesser
。更多信息见标签参考。