OO和写Drupal模块

时间:2010-05-18 17:06:55

标签: drupal object module oop

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

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

有一个名为Foo的类,它有一堆setter和accessors,它在抽取一些非常讨厌的代码和SQL方面做得很好。

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

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

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

或告诉他们打电话:

foo_get_something();
引人注目的是:

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

1 个答案:

答案 0 :(得分:4)

很难说,我认为没有像这样的“常见做法”。以无处不在的视图模块为例,提示在“标准”函数中包含常见的 API调用,并仅将对象的用法留给高级内容。

就个人而言,我的决定基于预期的API受众。如果你正在寻找'广泛'的Drupal用户群,强迫他们使用Classes可能(不幸/烦人)仍然有点拉伸,因为许多兼职PHP用户将没有正确的OOP概念(哎呀,甚至'专业' PHP开发人员通常没有它。)

如果另一方面你的目标受众仅由开发人员组成,那么提供一个正确的OO层应该没问题,并且可能比其他结果混合更少混淆(再次以视图为例,我经常开始使用其中一个方便的包装函数,发现自己稍后会重写一些代码,因为我需要这个微小的改动,需要直接使用对象 - 更好地保持一致并从头开始使用对象。