drupal - OO 和编写 Drupal 模块

标签 drupal object module oop

前言:是的,我读过: http://drupal.org/node/547518

我正在为 Drupal6 编写“foo”模块,我在其中以 OO 方式组织代码。

有一个名为 Foo 的类,它有很多 setter 和访问器,并且它在抽象一些非常讨厌的代码和 SQL 方面工作得很好。

问题是为其他模块公开一个类是常见做法,还是将内容包装在更典型的 foo_myfnname() 中更好?

例如,如果我正在编写模块的文档,我应该告诉人们这样做吗:

$foo = new Foo();
$something = $foo->get_something();

或者告诉他们打电话:

foo_get_something();

其幕后作用:

function foo_get_something() {
  $foo = new Foo();
  return $foo->get_something();
}

最佳答案

很难说,而且我不认为这有什么“常见做法”。以无处不在的 View 模块为例,提示将常见 API 调用包装在“标准”函数中,并将对象的使用仅用于高级功能。

就我个人而言,我会根据目标 API 受众来做出决定。如果您要解决“广泛”的 Drupal 用户群,强制他们使用类可能(不幸/烦人)仍然有点牵强,因为许多兼职 PHP 用户对 OOP 没有正确的概念(哎呀,甚至“专业”) PHP 开发人员通常没有它)。

如果另一方面,您的目标受众仅由开发人员组成,那么“按原样”提供适当的 OO 层应该没问题,并且可能比否则产生的混合物更容易混淆(再次使用 View 作为示例,我经常开始使用一个方便的包装函数,并发现自己后来重写了相当多的代码,只是因为我需要这个需要直接使用对象的微小改变 - 最好保持一致并从一开始就使用对象)。

关于drupal - OO 和编写 Drupal 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2859414/

相关文章:

具有相同名称的 Python 模块(即,在包中重用标准模块名称)

php - 用户注册后如何使Drupal重定向到页面

object - QTP 中的 .Exist 超时如何工作?

c# - 使用数组字段而不是大量对象

java - 将 JSON 字符串转换为 J2ME 中的对象?

java - 不同模块中的GAE/Java cron.xml相互覆盖?

C++20 模块 TS : still need function declaration?

Drupal 7 - 在#link 表单类型条目中添加 HTML?

Drupal - 限制用户访问

ajax - 你如何从drupal 7 Ajax链接中删除throbber?