Andi Gutmans看 PHP 5、Oracle 的未来

sunny秋痕

sunny秋痕

2016-01-29 12:59

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

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

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

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

您可能会问自己,既然提供了 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 有时进行的意外隐式对象克隆而导致的某种非常令人混淆的行为,而且使我们无法实现某些基本功能,如取消对方法返回对象的引用的功能。

(本文来源于图老师网站,更多请访问https://m.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 编号)本身;并不复制这些句柄所代表的对象

展开更多 50%)
分享

猜你喜欢

Andi Gutmans看 PHP 5、Oracle 的未来

PHP
Andi Gutmans看 PHP 5、Oracle  的未来

PHP 5 数据对象 (PDO) 抽象层与 Oracle

PHP
PHP 5 数据对象 (PDO) 抽象层与 Oracle

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

Oracle与PHP的集成:Zend Core for Oracle

编程语言 网络编程
Oracle与PHP的集成:Zend Core for Oracle

操作Oracle的php类

PHP
操作Oracle的php类

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

ORACLE PHP教程--您了解 PHP 吗?

PHP
ORACLE PHP教程--您了解 PHP 吗?

如何在PHP中使用Oracle数据库(5)

PHP
如何在PHP中使用Oracle数据库(5)

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

EJB 3.0开发指南之多表映射

EJB 3.0开发指南之多表映射

资深玩家《神魔》游戏心得攻略

资深玩家《神魔》游戏心得攻略
下拉加载更多内容 ↓