PHP框架中库和助手的区别

10

如果我经常使用一些字符串函数,应该把它们放在辅助类(helper class)还是库类(library class)中呢?

比如截取超过30个字符的字符串、返回随机字符串、将所有字符转换为小写等功能。这些都是我可能不需要创建对象就可以使用的函数,最好把它们作为静态方法(static methods)。

我应该把它们放在库类还是辅助类中?

如何判断应该放在哪里呢?

5个回答

14

Helpers是帮助已经存在的类,例如可以有以下helper:

array
string
url
等等

库(Library)是任何解决方案,它可以由您首次创建,并且没有其他人创建过。

因为你正在处理一个字符串(已经存在的东西),你应该将它放入一个helper类中,或者修改框架的字符串helper类(如果有的话)。但是,这只是一种约定或标准,如果您创建了一些非常棒的用于处理字符串的函数,也可以为其创建库。


1
你能说库类应该用来实例化对象吗?如果是这样,那么很容易知道何时创建帮助程序和何时创建库类。但在Java中,我们有Math类。它只有静态函数。回到原点 :) - ajsie
@noname:我不理解你的评论,但我没有谈论是否启动或不启动。 - Sarfraz

12
除了这个手册已经很好地解释了这些内容... libraries: 工具类,其中对象状态很重要(支付网关、身份验证等)。
helpers: 相关函数(不是类)的集合,用于执行重复任务(字符串、数组等)。 plugins: 一种简单的方式来插入第三方类。通常情况下,整个过程可以通过单个包装器函数调用。(在即将发布的CodeIgniter 2.0版本中已经弃用)。

4

我假设您正在使用CodeIgniter。

既然您已经写明不需要实例化对象并将在其静态方法中使用它,那么将其制作成助手比制作成库更有意义。

在CI中,助手也是受管理的,一旦加载,第二次尝试加载将被省略。您可以打开CI的内置助手以了解其功能,然后将其与库进行比较。通过了解目的,您可以自行决定使用助手还是库。


2

Helper是用户定义或预定义函数的集合,无需实例化,而库是需要实例化才能使用的类。库可能也包含用户定义和预定义的函数/方法。在库(类)中定义的函数称为方法!


1
如果我有很多使用的字符串函数,我应该把它们放在一个帮助类或库类中吗?
如果它们是函数,为什么要将它们放在一个类中?PHP允许自由浮动的函数。

PHP可以做很多事情,但有时可能会变得混乱。因此,我想知道什么是最佳结构。 - ajsie
如果不清楚的话,我是在暗示我认为自由函数是描述情况的最佳结构。 - troelskn

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接