China Open source community
站内导航:

 
 
 
当前位置: 首页 >> 程序设计 >> 您了解 PHP 吗?
 

您了解 PHP 吗?

作者:Rasmus Lerdorf      来源:     发表时间:2006-02-28     浏览次数:      字号:    

内容摘要 PHP 的创始人讲述了他对 PHP 现象、如何形成和推动了这种语言的发展、以及 PHP 的发展方向的看法

这个分四个层次的方法解决了一些问题。首先,它将一个典型项目中的内容沿着职责的线索分开。Web 前端开发人员从顶层进行工作,后端工程师从底层进行工作。他们在模板助手层有一点交叠。它还分开了包含 HTML 的任何文件,将它们放到 document_root 中,而将不包含 HTML 的任何文件放到 document_root 外。
PHP 提示和技巧

1. 当您在寻找关于某个具体的 PHP 函数的信息时,请转至 http://php.net/ 。例如:http://php.net/join。这将直接把您带到您地理位置附近的一台服务器上的联机手册中的正确位置上。

2. 试试这个:pear install apcpear 命令是一个有用的安装程序,它甚至可以用来安装用 C 编写的 PHP 扩展。在这种情况下,它将安装 APC opcode 高速缓存扩展。

3. 使用 opcode 高速缓存来提高性能。参见 #2。

4. 在 PHP 中混合 OOP 和过程代码不存在任何错误。在对象有意义的时候使用对象,其余情况转用过程。

5. 用您自己定制的 C 或 C++ 扩展来扩展 PHP 比您想象的要更容易。参见 PHP 源代码版本中的 README.EXT_SKEL

6. echo <<<EOB 语法对于用完整的 $variable 替换来输出文本块非常有用,并且无需避开任何东西。EOB;

7. PATH_INFO 很棒!用它来清除难看的 URL。

8. 使用一个记录程序,pear install apd。

9. 数据库抽象大部分是虚构的故事。直接的数据库调用没什么错,它利用您选择的数据库必须提供的所有技巧和窍门,以从中获得尽可能高的性能。

10. 保持使用您的基础技术,并构建简单的程序块。使用无线程的 Web 服务器,避免复杂的框架和抽象层,从而给您自己机会来跟踪和调试可能出现的任何问题。解决 Web 问题很简单;别试图使它变得困难。

顶层的模板层一般包含非常少的 PHP — 只是简单的函数调用和偶然的包含。可能一个循环。这些文件通常用一个 HTML 编辑工具来进行编辑。第二层,即模板助手,是定义商务逻辑和布局之间的接口的地方。这一层可能有一些方便的函数(如 start_table()、 show_user_record())和其它任何可重用的组件,这些可重用组件使得模板制作者的工作更加容易。

商务逻辑层完全不包含任何 HTML。这是实施诸如 SQL 查询和任何其它的 PHP 用户空间商务逻辑之类的东西的地方。您可以期望看到一个诸如 get_user_record() 之类的函数在这一层得到实施。这个函数将获取一个 ID,执行相应的 SQL 查询,然后返回包含结果的一个联合数组。然后,该层中的一个函数获取该数组,并为它包装一些 HTML,使它看起来好一点。

最后的 C/C++ 层是您安放一个项目所需的任何定制的后端代码的地方。许多人在这一层上没有任何东西,但如果您有一个专用的 C 或 C++ 资料库,您就可以在这里编写一个 PHP 扩展来和资料库接口。有时当一个用用户空间 PHP 编写的商务逻辑函数太慢时,也将使用这一层。

招聘和培训 PHP 开发人员

PHP 不是一种新的语言。它没有引进任何新的概念。这意味着培训已经了解 C、C++、Perl 或者甚至 Java 中的任意一种语言的编程人员来编写 PHP 代码相当容易。当我找 PHP 开发人员来做一个项目的时候,我倾向于找拥有 C 或 C++ 技能的人,我的想法是招聘经验丰富的编程人员要比招聘必须对 PHP 非常了解的人员容易得多。如果他们能够掌握这些语言,PHP 对他们来说将是小菜一碟。当然,如果他们有两方面的经验,那就更好了。

随意部署 PHP

使用合适的工具进行工作。我遇到过一些完全采用了 PHP 的公司,它们绝对是将 PHP 部署到了每个地方,但 PHP 从未打算成为一种适合于所有问题的通用语言。它主要适合于作为 Web 的前端脚本语言。取决于 Web 站点的通信量,它还可以用来执行大批量的后端工作。但在某些地方,您将需要用一种强类型的编译语言(如 C 或 C++)来编写您的部分代码,以获得最优的性能。

PHP 将去向何方?

人们常常问我 PHP 将去向何方。这是一个很难回答的问题,因为 PHP 主要是一个应运而生的开放源代码项目,它的发展是为了满足其社区的需要。在 PHP5 中,OO 功能和与 XML 的集成得到了大大的改进。我们集成了一个称为 SQL-Lite 的有趣工具,这个工具直接为文件提供了一个 SQL 接口,而无需服务器。很明显,它替代不了实际的数据库,但使用它无疑是比试图编写您自己的纯文本文件处理例程好得多的一种方法。它为您提供了一个 SQL 接口的事实意味着到一个实际数据库的移植(如果在任何时候需要这么做的话)变得更容易。

在 PHP5 中的这些变化虽然很重大,但却是渐进的。我们并不打算用这个版本把 PHP 的世界搞个天翻地覆。为 PHP4 编写的脚本中,基本不作修改就可在 PHP5 下工作。最大的变化是在 PHP5 中对对象的处理不同了。当您在 PHP5 中新建一个对象时,现在将默认地获得到该对象的一个引用,您可以到处传递它,而无需像您在 PHP4 中必须做的那样显式地声明您想通过引用来传递对象。在 PHP5 中,如果您想实际获得对象的一个拷贝,那么您需要“克隆”它。

更长远地看,有人在研究 Parrot 引擎的使用。Parrot 是作为 Perl6 后端的引擎编写的,但它实际上是一个与语言无关的通用脚本引擎。如果各种脚本语言可以全部在单个后端引擎上达成一致,然后这个引擎可以用作公共扩展和更好的语言交互的基础,那么这将非常有趣。

此外还有其它一些人在研究通过 JSR 223 的 Java 连通性,认为 Java 是可以成为脚本语言的单个通用后端。

不管 PHP 可能拥有怎样的一个未来,有一点是不变的。我们将继续和许多人似乎沉迷于其中的复杂性作斗争。最复杂的解决方案很少是正确的解决方案。我们为解决 Web 问题而提供的专一、直接的方法正是使 PHP 从一开始就与众不同的地方,当我们周围的其它解决方案似乎变得越来越庞大、越来越复杂时,我们正努力地简化和优化 PHP 和它解决 Web 问题的方法。

Rasmus Lerdorf (rasmus@lerdorf.com) 于 1968 年出生于格陵兰沿海的 Disko Island 岛上的 Godhavn/Qeqertarsuaq。他自 1985 起开始涉足基于 UNIX 的解决方案。他以在 1995 年开始了 PHP 项目,因 mod_info Apache 模块而闻名,他也因 mSQL 1.x 中的挑战 ANSI92 SQL 的 LIMIT 子句而受到责难,mSQL 1.x 现在(至少从概念上)发展成了 MySQL 和 PostgreSQL。

他往往否认自己是一个程序员,更喜欢将他看作是一个暴躁的解决问题的老手。如果解决方案需要一些代码而他找不到其它任何人来编写代码,那么他只能很不情愿地作出让步自己来编写代码。他现在是加州 Sunnyvale 的 Yahoo! Inc. 的基础架构工程师。

[1] [2]

编辑 webmaster

 
 
 
评论
 
 
发表
 
姓名: QQ:
性别: MSN:
E-mail: 主页:
评分: 1 2 3 4 5
评论内容:
验证码:
  
  • 请遵守《互联网电子公告服务管理规定》及中华人民共和国其他各项有关法律法规。
  • 严禁发表危害国家安全、损害国家利益、破坏民族团结、破坏国家宗教政策、破坏社会稳定、侮辱、诽谤、教唆、淫秽等内容的评论 。
  • 用户需对自己在使用本站服务过程中的行为承担法律责任(直接或间接导致的)。
  • 本站管理员有权保留或删除评论内容。
  • 评论内容只代表网友个人观点,与本网站立场无关。
  •  
    中国源码网 - WWW.YUANMA.ORG - 中国开放源代码社区