白色标签CakePHP:为实现者提供定制钩子/回调的最佳方法是什么?

我正在开发一个CakePHP应用程序,我们将为人们为自己的公司实施一个白色标签,他们需要为自己提供某些定制功能。 对于初学者来说,他们可以用视图做任何他们想做的事情,如果他们需要添加全新的东西,他们可以添加他们自己的控制器/模型。但是,我宁愿建议不要触摸我的控制器和模型,以便更轻松地进行版本升级。 从本质上讲,我计划给他们的定制功能将是非常基础的,我只需要在某些事情发生时调用“某事”,这样他们就可以做更新外部系统,电子邮件本身/客户端等事情,像这样的东西。 我想知道最好的方法是什么? 我的计划是为我的每个控制器提供一个“文件”(有一个类),以保持合理的组织。这个文件将包含我的代码将调用的一堆空方法,并且他们将能够在这些方法中添加代码来执行他们需要做的任何事情。 具体问题是,这个充满空方法的类应该是一个组件吗?控制器?只是一个普通的普通PHP类? 我需要从我的控制器调用这个类中的方法,所以我猜测它是一个控制器是不可能的(除非它是一个继承自我的控制器?或者我的继承可能)。 另外,我需要这些方法的实现者才能访问我的模型和组件,虽然我可以使用App :: Import,但我不需要设置魔法$ this-> ModelName成员集。 此外,我创建的此文件(其他组件或控制器)是否必须位于其他(我的)控制器/组件旁边的应用程序文件夹中?或者我可以将它扔到像vendor文件夹那样独立的地方吗? 你之前做过这样的事吗? 任何要避免的提示/建议/陷阱都将受到欢迎。 我知道这有点主观,如果你之前已经这样做了,我希望听到你的经验。 谢谢!     
已邀请:
想到的两个想法: 创建客户可以扩展的
abstract
模板(控制器,模型,必要的) 将您的控制器/组件/模型作为插件编写在自己的命名空间中 最终你似乎想提供一个“增强的”Cake框架,你的客户仍然必须编写自己的Cake代码(我不知道这与你的“基本定制功能”的概念如何相结合)。因此,您应该以尽可能多的“可选”方式编写代码(命名空间插件,组件,
AppModel
增强功能,额外库),并提供有关如何使用这些代码来帮助客户加快工作的文档。     
我会设置一组常见的事件,并使用类似链接到事件系统来处理这个事件。 这让客户端可以管理事件处理程序类(阅读自述文件以了解我的意思)并在应用程序范围内订阅和广播事件。 此外 - 如果您希望让您的用户不要使用您的核心功能,我建议您将主应用程序打包为插件。 http://github.com/m3nt0r/eventful-cakephp     

要回复问题请先登录注册