PHP:使用Pecl / Pear,还是构建自己的系统?
在构建我的一些PHP应用程序时,可以使用PEAR / PECL模块对许多功能进行编码,但是,某些使用它的人可能无权安装这些东西,这对我来说是一个难题。
我是否应该让某些用户使用PEAR / PECL来实现功能,这些功能使我可以比我自己编写功能更快地对系统进行编码,但可以避免某些人使用它。
解决方案
我的建议是从假定PEAR / PECL模块开始,然后完成其余代码。然后,一旦大部分代码都按我们想要的方式工作,我们就可以评估返回并用自己的代码逐步替换外部代码的情况。另外,届时我们将更好地了解使用这些技术对用户群的影响。
最初使用PEAR / PECL对其进行编码,如果有人要求使用非PEAR / PECL版本,请开始编写自己的替代版本,然后再使用该版本。
这样一来,初始开发的速度将大大加快,我们可能会发现,一旦开始发布应用程序,就不会有人在乎需要第三方库。
我大多数时候要做的是,永远不会使用全局安装在服务器上的PEAR。版本可能会更改并影响应用程序。相反,我有一个配置文件(在我的情况下为XML),其中列出了所有必需的软件包及其版本。安装程序连接到我的个人FTP存储库,并在$ PROJECTBASE / lib / pear /中本地下载并安装所有PEAR软件包。PEAR在本地而不是全局运行。我们可能需要考虑的事情。
使用PEAR没问题,如果用户没有root权限访问其Web服务器,则只需从pear.php.net下载PHP文件并将其添加到其include路径。 PECL的解决方法有些棘手,因为没有root访问权通常没有办法安装新模块。
通过使用pear库进行开发可以节省开发时间,并提供与我们分发的内容捆绑在一起的库(尽管我们必须确保它符合许可要求)
除非我们要进行与某个PECL扩展特别相关的事情(例如XDebug Web前端之类的东西),否则我不会依赖于安装某些PECL扩展,大多数安装将带有相当原始的扩展集。
我们需要提防,因为梨中的许多模块的质量确实很低。
有些很棒,不要误会我的意思,但是不要因为在梨中而认为梨中的任何东西具有任何给定的质量。这意味着在决定使用它之前,我们至少需要先略过一个梨模块的源,这对于完成简单的任务可能比不使用梨要花费更多的时间。
pecl是不同的。扩展往往会经过更好的审查和测试,否则会使php崩溃。
这部分取决于我们有多少时间以及项目的目的。如果我们只是想做一些有用的事情,请选择PEAR / PECL。如果我们想学习成为一个更好的程序员,并且有时间,那么我建议我们花精力编写自己的版本。了解了要替换的内容后,我们可能希望切换到PEAR / PECL版本,以免浪费时间重新实现已经实现的功能。
...但是,另一方面,预先存在的工具并不总是能够完全满足需求,有时会产生开销,对我们没有任何好处。这就是Unix命令行工具如此之小,用途狭窄的原因。没有人真正需要版本" ls",除了" ls"当前可以执行的功能之外,它还可以执行其他任何操作。无论我们使用哪种PEAR库,版本都会完全由我们编写,因此可以完全满足需要。需要仔细考虑...
...但是在紧握的手上,不要花太多时间思考它。花五分钟,做出决定,然后开始编码。即使我们做出了错误的决定,至少我们还将获得更多的实践编码。 :-)
使用PEAR,但允许在项目中包含PEAR包。所有PEAR软件包都可以从http://pear.php.net/单独下载,并且可以放在任何地方。然后,根据便利性和许可问题,我们可以将所有必需的PEAR文件与项目打包在一起,或者告诉用户如何下载和"安装"它们。
重申很多已经说过的话:http://www.codinghorror.com/blog/archives/001145.html