新在Symfoob娱乐下载ny 2.8: PropertyInfo组件
2015年10月27日·发表的哈维尔Eguiluz
警告:这篇文章是关于一个不受支持的Symfony的版本。ob娱乐下载其中一些信息可能是过时了。阅读最近的Symfony文档ob娱乐下载。
PHP是一种弱类型的编程语言。这意味着你不需要声明的变量的类型(如。int
,bool
),你可以存储不同类型的数据(如数字和字符串)在同一个变量。
由于开发人员部分克服这个限制类型提示,phpDoc从PHP 7,返回类型声明。但是,在某些情况下仍然需要知道PHP的类型属性。这就是为什么Symfoob娱乐下载ny已经添加了一个新的组件PropertyInfo。
给定一个PHP类,该组件被反省几个它的所有属性信息元数据提供者,如教义ORM映射,phpDoc注释,PHP类型提示,序列化程序元数据等。
考虑下面的PHP类的教义的实体,它包含不同类型的属性:
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
名称空间AppBundle\实体;使用学说\ORM\映射作为ORM;/ * * *@ entity* /类FooClass{/ * * *@ORM\ Id *@ORM\列(类型=“整数”)* /公共美元id;/ * * *这是一个日期(简短描述)。* *长描述。* *@var\ DateTime * /公共美元喷火;私人美元酒吧;公共函数setBar(\ SplFileInfo美元酒吧){美元这- >酒吧=美元酒吧;}}
在使用PropertyInfo组件提取信息之前,您必须创建和配置元数据提取器来使用(ReflectionExtractor
,PhpDocExtractor
,DoctrineExtractor
和SerializerExtractor
是内置的,但你也可以创建自己的提取器):
1 2 3 4 5 6 7 8
使用ob娱乐下载\组件\PropertyInfo\PropertyInfo;美元propertyInfo=新PropertyInfo (数组(美元reflectionExtractor),数组(美元doctrineExtractor,美元phpDocExtractor,美元reflectionExtractor),数组(美元phpDocExtractor),数组(美元reflectionExtractor));
现在你可以反省每个属性类型如下:
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
美元propertyInfo- >getTypes (“FooClass”,“foo”);/ /数组(1){/ / [0]= >/ /类Symfoob娱乐下载ny \ PropertyInfo \ \组件类型# 36 (6){/ /私人builtinType美元= >字符串(6)“对象”/ /私人nullable美元= > bool(假)/ /私有类美元= >字符串(8)“DateTime”/ /私人收藏美元= > bool(假)/ /私人collectionKeyType = >零美元/ /私人collectionValueType = >零美元/ /}/ /}美元propertyInfo- >getTypes (“FooClass”,“id”);/ /数组(1){/ / [0]= >/ /类Symfoob娱乐下载ny \ PropertyInfo \ \组件类型# 36 (6){/ /私人builtinType美元= >字符串(3)“int”/ /私人nullable美元= > bool(假)/ /私有类= >零美元/ /私人收藏美元= > bool(假)/ /私人collectionKeyType = >零美元/ /私人collectionValueType = >零美元/ /}/ /}美元propertyInfo- >getTypes (“FooClass”,“酒吧”);/ /数组(1){/ / [0]= >/ /类Symfoob娱乐下载ny \ PropertyInfo \ \组件类型# 245 (6){/ /私人builtinType美元= >字符串(6)“对象”/ /私人nullable美元= > bool(假)/ /私有类美元= >字符串(11)“SplFileInfo”/ /私人收藏美元= > bool(假)/ /私人collectionKeyType = >零美元/ /私人collectionValueType = >零美元/ /}/ /}
该组件还包括其他实用工具来提取有用的信息:
1 2 3 4 5 6 7 8 9 10 11 12 13
美元propertyInfo- >getproperty (“FooClass”);/ / (“id”、“foo”、“酒吧”)美元propertyInfo- >isReadable (“FooClass”,“id”);/ /正确的美元propertyInfo- >isReadable (“FooClass”,“酒吧”);/ /错误美元propertyInfo- >isWritable (“FooClass”,“foo”);/ /正确的美元propertyInfo- >isWritable (“FooClass”,“酒吧”);/ /正确的美元propertyInfo- >getShortDescription (“FooClass”,“foo”);/ /这是一个日期(简短描述)”。美元propertyInfo- >getLongDescription (“FooClass”,“foo”);/ /“长描述。”
发表在#生活在边缘
评论
文档公关尚未合欧宝官网下载app并,人们可能想看看https://github.com/symfony/symfony-docs/pull/5717和平台。ob娱乐下载sh版本http://pr - 5717 - 6 - qmocelev2lwe.eu.platform.sh/components/property_info部署。html:)
也该组件是用于接口平台如果一些搜索具体的用法。
也该组件是用于接口平台如果一些搜索具体的用法。
@Javier: @Jan讨论提到的“代码”链接页面,应该指向https://github.com/symfony/property-info而不是https://github.com/symfony/PropertyInfob娱乐下载o
@Maxime,你是对的。现在这个问题被固定和即将部署的解决方案。谢谢。
不管怎样. .PropertyInfo看起来很有用。
Javier Eguiluz is a certified Symfony engineer.
Get certified! Online exams available in all countries.
Register Now