在CodeIgniter中开发一段时间之后,我发现在创建自定义库以及何时创建自定义帮助程序时很难做出决定。
我明白两者都允许在其中使用业务逻辑并且可以在整个框架中重用(从不同的控制器调用等)。
但我坚信CI核心开发人员正在将图书馆与帮助者分开,这背后有一个原因,我想,这就是等待我发现并开悟的原因。
CI开发人员,请告知。
我认为最好包含一个例子。
我可以有一个
class notification_lib {
function set_message() { /*...*/}
function get_message() {/*...*/}
function update_message() {/*...*/}
}
或者,我也可以将所有功能都包含在帮助器中。
在notification_helper.php
文件中,我将包含set_message(), get_message(), update_message()
..
无论哪种方式,它仍然可以重复使用。所以这让我思考决策点,关于我们何时创建一个库和一个帮助器,特别是在CI中。
在一个普通的(无框架式)php应用程序中,由于没有帮助程序,因此选择很明确,您只需创建一个库即可重用代码。但在这里,在CI中,我想了解核心开发人员对库和帮助程序的分离
答案 0 :(得分:57)
选择归结为一组函数或类。选择与实例类和静态类几乎相同。
如果你只有一组简单的函数,那么你只需要创建一组函数。如果这些函数组共享大量数据,那么您需要创建一个具有实例的类,以便在方法(类函数)调用之间存储此数据。
您是否有许多与您的通知消息相关的公共或私人财产?
如果使用类,则可以通过系统设置多条消息,然后get_messages()可以返回私有的消息数组。这将使它成为一个图书馆的完美。
答案 1 :(得分:28)
在决定这一点时,我会问自己,我认为这对你也有帮助。问题是:我是在为我的框架提供功能还是在整合?
如果您有一个要添加到框架的功能,那么您将需要为此创建一个库。例如,表单验证是您要添加到框架的功能。即使你可以在没有这个库的情况下进行表单验证,你也可以创建一个标准的验证系统,这是一个功能。
但是,还有一个表单助手可以帮助您创建表单的HTML。与表单验证库的最大区别在于表单助手不是创建新功能,它只是一组相关的函数,可以帮助您正确地编写表单的HTML。
希望这种区别对你有所帮助。
答案 2 :(得分:7)
首先,您应该确定您了解CI库和帮助程序类之间的区别。帮助程序类是帮助任何预先制作的内容,例如array
,string
,uri
等;他们在那里,PHP已经为他们提供了功能,但你仍然创建了一个助手来为他们添加更多的功能。
另一方面,库可以是你第一次创建的东西,任何可能不一定在那里的解决方案。
一旦你完全理解了这种差异,做出决定一定不会那么困难。
答案 3 :(得分:3)
答案 4 :(得分:2)
如果有人问我在创建助手或图书馆的时候你会采用什么方式。
我认为这些差异:
所以去 Class ,即如果任何一个点匹配
的库对于助手:任何与图书馆不匹配的点
答案 5 :(得分:0)
我个人使用库来做大事,比如说我建的FTP库比CodeIgniters出货的库快得多。这是一个有很多方法的类,它们彼此共享数据。
我将帮助程序用于与许多其他功能无关的较小任务。像装饰字符串这样的小功能可能就是一个例子。或者将目录递归地复制到另一个位置。