动作引擎的结构

时间:2014-01-17 11:49:55

标签: php performance events callback

我正在开发一个需要基本Action引擎的项目,以便某些函数可以绑定到某些事件,而其他函数可以调用某些事件。就像Wordpress Hooks系统一样(除了没有过滤器)。

我知道我可以复制Wordpress,但我想对一个想法做一些澄清。这个项目将会变得非常大,目前将包含大约1200个事件和超过2000个回调以限制这些事件,这些数字只会增长。那么,(在表现方面)最好是:

A)

  

拥有一个具有静态函数/一组函数的类,它们将充当所有这些绑定的存储库,并且是此功能的唯一接口

B)

  

要构建包含这些函数的类,但是当应用程序想要绑定函数或调用事件时,他们需要访问(可能包含在全局注册表中,还没有决定)包含特定事件的实例化Event对象,根据使用的实例。

所以,我的问题是,B会更高效(通过将事件分成更小的组),或者A在这种情况下是否足够?

1 个答案:

答案 0 :(得分:1)

嗯,这两种策略需要考虑的不止一件事。

A)如果你在B中使用一些数组结构来查找事件,那么我所理解的将会比B具有最佳性能,但是由于你需要在课堂上写作,这将会更加复杂。那将是巨大的

B)可能会降低性能,但更容易使用,并可作为事件引擎进行扩展。

我认为实施的最佳选择是使用B作为一种事件调度程序模式。查看这个要点https://gist.github.com/nunomazer/8472389,代码来自本文http://www.cainsvault.com/design-pattern-php-event-dispatcher/。它实现了一个基于Observer Pattern的简单事件管理器。

但是,如果我使用的是事件管理器,我可能会考虑使用一个框架,例如Symfony Event Dispatcher组件已准备就绪,并允许您将其用作项目中的库。