Andi Gutmans看 PHP 5、Oracle 的未来

2016-01-29 12:59 5 1 收藏

Andi Gutmans看 PHP 5、Oracle 的未来,Andi Gutmans看 PHP 5、Oracle 的未来

【 tulaoshi.com - PHP 】

PHP 5 的发布经理对 PHP 5 一些新特性的概述及对其未来(对 Oracle 用户而言)的评述。

PHP 5(PHP:超文本预处理语言版本 5)于 2004 年 7 月 13 日正式发布。毫不奇怪,由于 PHP 在 Web 应用程序市场中的领先地位,因此该版本获得了媒体的广泛报道。.NET 和 J2EE 等技术确实在曝光率和宣传报道方面超过 PHP,但易用性、高性能、与 Apache Web 服务器的紧密集成以及大量应用程序构建块使 PHP 成为领先的 Web 应用程序开发语言之一。

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/php/)

您可能会问自己,既然提供了 Zend Engine 功能的 PHP 4 已经如此成功,为什么还需要 PHP 5 和 Zend Engine II 呢?事实是,PHP 4 在某些方面并不擅长。这些方面中的大多数对于大型项目和公司(项目管理的结构化程度更高,且系统之间必须具备协同工作的能力)而言更为重要。PHP 5 解决了这些问题,使 PHP 不但对此类项目更具吸引力,而且还仍是 Web 应用程序开发的领先技术。

在本文中,我将介绍:

PHP 5 的幕后知识 它的某些新特性的简短概述 简要展望 PHP 和 Oracle 用户的未来。

Zend Engine II 新的面向对象的模型

背景随着 PHP 使用范围的稳步增长,它在较大项目中的使用率也在不断上升。大型项目好像都使用面向对象 (OO) 的方法。并不是说您不能编写小型 OO 应用程序,而且即便不使用面向对象的编程 (OOP) 方法也完全可以编写令人印象深刻的大型应用程序。但人们往往在这些情况下选择 OO 范例 — 可能是因为 OOP 为功能和技术设计提供更多惯用的工具(UML — 统一建模语言)、为重复出现的问题提供重用解决方案(设计模式)以及 OO 语言本身的内置机制(帮助强化软件设计和合同)。

PHP 先前版本中的对象模型存在的主要问题是,将对象实现为具有与整数和字符串相似的副本语意的自带类型。这不但会因为 PHP 有时进行的意外隐式对象克隆而导致的某种非常令人混淆的行为,而且使我们无法实现某些基本功能,如取消对方法返回对象的引用的功能。

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/php/)

以下示例演示了这两个问题。
a) 隐式对象克隆:

<?php 

class Person {
var $name;

function Person($name) {
$this-name = $name;
}

function setName($name) {
$this-name = $name;
}

function getName() {
return $this-name;
}
}

function lowerCaseName($obj)
{
$new_name = strtolower($obj-getName());
$obj-setName($new_name);
}

$obj = new Person("Andi");
lowerCaseName($obj);
print $obj-getName();

?

大多数开发人员认为此示例会打印出“andi”。但令人吃惊的是,此示例在 PHP 4 中却打印出“Andi”。这是因为正如前面提到的,PHP 4 将对象作为常规自带类型处理,所以将 $obj 按值传递给 lowerCaseName() 实际是克隆该对象。lowerCaseName()$obj 执行的最终操作在该对象的克隆版本上进行。此行为不但导致令人吃惊的结果,而且对于认识到此问题的开发人员而言,它将需要按引用传递和返回对象,由于开发人员必须在许多位置插入“&”(按引用传递、按引用返回和按引用赋值),因此将使代码的维护更加困难。

b) 无法取消对方法返回对象的引用:

$obj-getParentObject()-method();

如果您不熟悉 PHP 4,则可能认为此示例可以正常运行。但由于前面提到的隐式克隆问题,因此不具有取消对方法返回对象的引用的功能,从而无法实现这一功能。作为变通方法,很多 PHP 4 代码将如下所示:

$temp_obj &= $obj-getParentObject();
$temp_obj-method();

还有更多示例可以说明对象的基本结构如何在 PHP 4 变得存在缺陷,但这两个示例足以让您认识到这一点。

主要的新语言特性。PHP 5 中最基本、最重要的变化是使用了对象句柄(或 Id),而不是将其实现为自带数据类型。复制时实际上只复制句柄(Id 编号)本身;并不复制这些句柄所代表的对象

来源:http://www.tulaoshi.com/n/20160129/1488459.html

延伸阅读
标签: PHP
  PHP程序访问数据库,完全可以使用存储过程,有人认为使用存储过程便于维护 不过仁者见仁,智者见智,在这个问题上,偶认为使用存储过程意味着必须要DBA和开发人员更紧密配合,如果其中一方更变,则显然难以维护。 但是使用存储过程至少有两个最明显的优点:速度和效率。 使用存储过程的速度显然更快。 在效率上,如果应用一次需要做一系...
标签: PHP
了解一般的技术和设计,用于编写与 Oracle 数据库的使用直接相关的可管理、可伸缩的快速 PHP 代码。 在过去九年中,PHP 已经从组装个人网站的小型语言发展到为世界上某些最大和流量最高的网站提供动力。任何高流量网站的三个最重要的设计方面是可伸缩性、性能和可维护性。可伸缩性意味着您的应用程序流量负载可以不断增长,...
随着社会的发展,我们很多人都以挣钱为重。也有很多人在求神拜佛的希望自己在未来的几年中能够在事业上做出成就。而有的人则是很符合接下来的5年时间的运势,那么哪些人在接下来的5年中容易发财呢?哪些生肖的人注定是发财命呢?十二生肖的发财时机又是什么时候呢?一起来看看吧。 富贵的含义有很多,比如说富裕而显贵,或是有财有势,...
标签: PHP
          来源:qdlover       http://qdlover.yeah.net   一个oracle+PHP的查询的例子   本来我不用php了,可是还是有很多朋友问我,我就做了一个例子,具体函数请查手册   其实oracle的函数和别的也差不多,只不过它这里多了一...
标签: PHP
  通过PHP你可以轻松的连接到数据库,请求数据并将其显示在你的web站点中,甚至修改数据库中的数据。MySQL是一种很流行的数据库,并且在互联网中有许多有关PHP与MySQL的教程。MySQL是免费的,这一点也许就吸引了不少人。由于其广泛应用,我就不想在这里赘述MySQL的使用方法了。Oracle被大量在企业应用中采用,因此我们就利用Oracle来...

经验教程

657

收藏

14
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部