目前,我似乎正在为许多使用Entity API的模块开发附加组件,并且该entity_metadata_wrapper()
功能不断弹出。
该文档页面表示,这一下吧:
返回给定数据的属性包装器。
如果包装了实体,则可以使用包装器为实体属性检索其他包装器。
忽略其中的“实体”一词的弗洛伊德奇妙的拼写,我真的不明白这些包装的目的是什么。
我知道该函数实质上返回一个EntityDrupalWrapper
类:
包装器简化了实体属性的getter和setter回调的应用
但是我不明白的是它如何使事情变得更容易。
例如,要更新节点的状态属性,可以使用以下代码:
$node = node_load($nid);
$node->status = 1;
node_save($node);
很干净 据我了解(但可能是错误的),使用的等效代码entity_metadata_wrapper()
会比这更冗长。
我不确定在这里是否仅仅是因为使用了“包装器”这个词,但是我也仔细查看了Entity模块中的代码,并且我真的不太了解它。
有谁能够解释使用此功能的好处,并可能为常见用例提供一个简单的代码示例?