background image

 PHP 开发中面向对象和函数式编程的分析

“函数式编程跟 Web 应用开发非常的匹配。Web 应用接收一个 HTTP 请求,生成一个
HTML

返回结果。这应当被认做是一个从请求到页面的函数式功能。

而我要补充下面的东西。实现这些功能的代码本质上反映的就是函数式的风格。我们并没
有用真正的对象把应用程序的状态保存在内存里、用它们来实现应用逻辑操作,我们使用
的是数据库来保存应用程序的状态,整个的代码基本上就是一个巨大的,复杂的函数式
功能编码,它来管理特定数据流的走向:数据库或用户。
从这些讨论我们能得到什么?狂热的强制使用面向对象的风格、对 Web 应用使用复杂的
架构未必总会有好处。你不一定就能从这种架构方式中获得有价值的好处,但从性能和日
后维护的角度看,它们却能使你的应用过于复杂和效能低下。我们必须针对每个项目的各
自情况来掂量采用某种方式的好处和坏处。
当一个程序员编写一个 Web 应用程序,如果突然代码中显示出了函数式编程风格的印记
时,不要马上批评和嘲笑他。也许他是特意这样做的。也许这是一种敏锐的感觉到 Web 编
程本身就是天生的函数式编程的潜意识表现。

Web

》 

http://sd.csdn.net/a/20101125/282461.html
通过我自身编程实践经验感觉用 PHP 开发 WEB 应用,与前端业务逻辑和 HTML 生成的
相关代码应该采用函数式编程的方法进行编码,一般不建议采用面向对象的方法。与底层
数据交互以及其他一些稳定的组件可以采用面向对象的方式编写,方便调用和修改。
以下是我关于生成前端 HTML 二级分类的 PHP 代码,全部代码就写了三个函数,查询一
次数据库。
/**
* 取出所有分类
*
* @access public
* @return array
*/
function categorylist(){
$categoryresult = $GLOBALS['db']->query(“select * from ebk5_category order 
by serialNum asc”);
while($row = $GLOBALS['db']->fetchRow($categoryresult)){
$arr[]=$row;
}
return $arr;
}

/**
* 从数组中取出所有顶级分类