原文地址:https://www.drupal.org/node/1794140
[术语翻译] API: 应用程序接口 Typed Data API: 类型化数据应用程序接口 Entity API: 实例化应用程序接口Drupal 8的类型化数据API
2014年2月24日最后更新,Dixon于2012年9月25日创建
Berdir, michaellenahan, chx, alanburke等编辑
翻译:半截烟头
预览
创建“类型化数据应用程序接口”(Typed Data API)是为了给开发者提供一个在不同方式下进行数据交互的一致的方法。此应用程序接口不仅允许你对实际数据(actual data)进行交互,还提供了取得关于实际数据更多信息或元数据的方法。
类型化数据应用程序接口是一个低级别,泛型(generic,通用?)和可重用的面向对象应用程序接口。一个应用程序接口实现它的实体应用程序接口 – Drupal 基本数据模型。
为什么我们会需要类型化数据应用程序接口
不象其他许多语言,PHP是一个宽松数据类型语言,它在处理数据时没有明确定义不同的数据类型。因此Drupal也一样。例如:没有一个一致的方法来告诉你一个字段是字符串,整数或时间戳,当然也不能告诉你这些是否可翻译或可访问(有访问许可)。即使你作为一个开发者,恰好知道一个文本字段的值恰好就是一个字符串,也没有一个一致的程序性方法来取得这个信息。这在创建Drupal机器可读的应用程序接口并将数据展示给其他系统的时候,产生了许多问题。
这就需要一个一致性的方法来类型化这个数据,或是描述这个数据。
基本的应用程序接口
类型化数据应用程序接口主要提供了三个不同的接口。下面你可以找到这些接口的描述和一些重要的方法(非全部列表)
- ComplexDataInterface接口
实现这个接口是用于那些由命名属性这样的多数据块组成的数据,这个接口定义了一些基本的方法,包括:
get($property_name)方法
获取属性值。
set($property_name, $value)方法
设置属性值,参数$value必须是这三个接口其中的一个所实例化的实例。
- ListInterface接口
实现这个接口是用于那些由其他顺序化列表所组成的数据,实例化一个其他复杂数据块列表。列表被排序,并且可以包含重复项目,例如:一个多节点引用字段可能包含两次相同的引用。这个接口扩展自ArrayAccess接口。
offsetGet($index)方法
此方法继承自ArrayAccess,所以一个单独的项将被从数据组中取出。
$first_item = $items[0];
- TypedDataInterface接口
- 实现这个接口是用于表示一个单一类型化数据,如字符串,整数等等,这是类型化数据应用程序接口最小的内建块,可以明确地按声明的类型使用。此接口定义了一些基本方法,包括:
getValue()方法
取得数据的值。
setValue($value)
设置数据的值
getDefinition()
取得关于此数据的信息,如是否为基本类型等等。
使用此应用程序接口
[待完成]
一个定义长什么样
[待完成]
实体应用程序接口
Drupal 8 实体API建立于类型化数据API