Warning: Cannot modify header information - headers already sent by (output started at /www/wwwroot/sbboke.com/wp-content/plugins/wordpress-seo/src/integrations/front-end-integration.php:409) in /www/wwwroot/sbboke.com/wp-content/themes/pacify/content-single.php on line 5

Magento2:数据接口和模型功能如何交互?

我一直在这里关注有关模型和资源的文章。根据我的理解,Magento2使用服务合同为第三方提供模型访问。

在这里,我对PostInterface.php包含所有常量和已定义的getters / setter方法的Data接口感兴趣。例如:

const POST_ID       = 'post_id';
const URL_KEY       = 'url_key'; 
public function getId();
public function getUrlKey();
public function setUrlKey($url_key);

现在,这些方法也已在模型中定义Model/Post.php。例如:

public function getUrlKey()
{
    return $this->getData(self::URL_KEY);
}

问题:

  1. 如果来自第三方的模型请求会打接口功能,而接口功能会模型的功能吗?
  2. 如果我的模块不使用或任何第三方都不需要使用这里的接口,是否有必要?
  3. 这些功能在内部如何相互作用?如果我要在Magento本身中开发另一个模块,是否可以使用接口函数getUrlKey()代替模型getUrlKey()函数?

答案:

  1. 第三方模块应使用标记为的模块的类/接口运行@api,不一定是服务合同接口,但最好是。如果在依赖项中请求接口,Magento对象管理器将根据声明的首选项解析要实例化的实际模型di.xml(因为接口本身无法实例化)。参阅官方文件
  2. 建议声明服务合同接口,在此处官方文档中阅读有关好处的信息
  3. 以上回答(模型实现接口)。即使接口已在模块中定义,也应始终使用可用的接口。这样可以通过限制类/模块之间的依赖关系数量来管理复杂性

版权属于: sbboke版权所有。

转载时必须以链接形式注明作者和原始出处及本声明。

张贴在magento2教程标签:

相关文章

0 0 投票数
文章评分
订阅评论
提醒
0 评论
内联反馈
查看所有评论