跳转到主要内容
半截烟头 提交于 20 September 2014

原文地址: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