CodeIgniter:在CodeIgniter中创建库和帮助程序的决策

use*_*432 45 design-patterns codeigniter

在CodeIgniter中开发一段时间之后,我发现在创建自定义库以及何时创建自定义帮助程序时很难做出决定.

我明白两者都允许在其中使用业务逻辑并且可以在整个框架中重用(从不同的控制器调用等)

但我坚信,CI核心开发人员正在将图书馆与帮助者分开,这背后有一个原因,我想,这就是等待我发现并得到启发的原因.

那里的CI开发者,请指教.

我认为最好包含一个例子.

我可以有一个

class notification_lib {
   function set_message() { /*...*/}

   function get_message() {/*...*/}

   function update_message() {/*...*/}
}
Run Code Online (Sandbox Code Playgroud)

或者,我也可以将所有功能都包含在帮助器中.

在一个notification_helper.php文件中,我将包括set_message(), get_message(), update_message()..

无论哪种方式,它仍然可以重复使用.所以这让我思考决策点,关于我们何时创建一个库和一个帮助器,特别是在CI中.

在一个普通的(无框架)php应用程序中,由于没有帮助程序,因此选择很明确,您只需创建一个库即可重用代码.但是在CI中,我想了解核心开发人员对库和帮助程序的分离

Phi*_*eon 58

那么选择归结为功能或类的集合.选择几乎与实例类相对于静态类.

如果你只有一组简单的函数,那么你只需要创建一组函数.如果这些函数组共享大量数据,那么您需要创建一个具有实例的类,以在方法(类函数)调用之间存储此数据.

您是否有许多与您的通知消息相关的公共或私人财产?

如果您使用类,则可以通过系统设置多条消息,然后get_messages()可以返回私有的消息数组.这将使其成为图书馆的完美之选.

  • 我被骗了!哦,震惊,恐怖,猥亵!不会有人想到孩子们!:'( (3认同)

Sea*_*aux 28

在我决定这个问题时我会问自己,我认为这也会对你有所帮助.问题是:我是否为我的框架提供了一项功能,还是我正在整合?

如果您有一个要添加到框架的功能,那么您将需要为此创建一个库.例如,表单验证是您要添加到框架的功能.即使您可以在没有此库的情况下进行表单验证,您也可以创建一个用于验证的标准系统,这是一项功能.

但是,还有一个表单助手可以帮助您创建表单的HTML.与表单验证库的最大区别在于表单助手不是创建新功能,它只是一组相关的函数,可以帮助您正确地编写表单的HTML.

希望这种差异化对你有所帮助.


Sar*_*raz 7

首先,您应该确定您了解CI libaray和帮助程序类之间的区别.辅助类是什么,可以帮助任何预先做好的事情,例如array,string,uri等; 他们在那里,PHP已经为他们提供了功能,但你仍然创建了一个助手来为他们添加更多的功能.另一方面,libaray可以是你第一次创建的东西,任何可能不一定在那里的解决方案.

一旦你完全理解了这种差异,做出决定绝不是那么困难.

希望有所帮助.

谢谢