1

我正在开发一个 CakePHP 应用程序,我们将把它作为白标提供给人们为他们自己的公司实现,他们需要为自己提供某些定制能力。

对于初学者,他们可以对视图做任何他们想做的事情,如果他们需要添加全新的东西,他们可以添加自己的控制器/模型。但是,我宁愿建议不要触摸我的控制器和模型,以使版本升级更容易。

从本质上讲,我计划为他们提供的自定义功能将是非常基本的,我只需要在某些事情发生时调用“某事”,这样他们就可以执行更新外部系统、给自己/客户发送电子邮件等事情,像这样的东西。

我想知道最好的方法是什么?

我的计划是为我的每个控制器创建一个“文件”(一个类),以使事情合理组织。这个文件将有一堆我的代码将调用的空方法,他们将能够在这些方法中添加代码来做他们需要做的任何事情。

具体的问题是,这个满是空方法的类应该是一个Component吗?控制器?只是一个普通的普通 PHP 类?

我需要从我的控制器中调用这个类中的方法,所以我猜它是一个控制器是不可能的(除非它是一个从我的控制器继承的控制器?或者我的可能是从他们的继承的)。另外,我需要这些方法的实现者才能访问我的模型和组件,尽管我可以让它们使用 App::Import,但我不需要设置神奇的 $this->ModelName 成员.

另外,我创建的这个文件(组件或控制器)是否必须位于其他(我的)控制器/组件旁边的 app 文件夹中?或者我可以把它扔到单独的地方,比如供应商文件夹吗?

你以前做过这样的事情吗?
任何要避免的提示/建议/陷阱都将受到欢迎。

我知道这有点主观,如果你以前做过,我主要想听听你的经验。

谢谢!

4

2 回答 2

1

我会设置一组通用事件并使用链接到事件系统之类的东西来处理这个问题。

这使客户端可以管理事件处理程序类(阅读自述文件以了解我的意思)并在应用程序范围内订阅和广播事件。

另外 - 如果你想让你的用户不喜欢你的核心功能,我建议你将你的主应用程序打包为插件。

http://github.com/m3nt0r/eventful-cakephp

于 2010-10-04T22:32:43.863 回答
1

脑海中浮现出两个想法:

  • 创建abstract您的客户可以扩展的模板(控制器,模型,任何必要的)
  • 将您的控制器/组件/模型编写为自己的命名空间中的插件

最终,您似乎想提供一个“增强的”Cake 框架,您的客户仍然必须在其中编写自己的 Cake 代码(不过,我不知道这与您的“基本定制功能”的想法如何结合)。因此,您应该尽可能以“可选”方式编写代码(命名空间插件、组件、AppModel增强功能、额外库),并提供有关如何使用这些来帮助您的客户加快工作速度的文档。

于 2010-10-03T02:56:15.753 回答