摘要:
引用是什么在 PHP 中引用意味着用不同的名字访问同一个变量内容。这并不像 C 的指针,它们是符号表别名。注意在 PHP 中,变量名和变量内容是不一样的,因此同样的内容可以有不同的名字。最接近的比喻是 Unix 的文件名和文件本身 - 变量名是目录条目,而变量内容则是文件本身。引用可以被看作是 Unix 文件系统中的紧密连接。引用做什么PHP 的引用允许你用两个变量来指向同一个内容。意思是,当你这样做时:<?php$a =& $b?>这意味着 $a 和 $b 指向了同一个变量。 注: $a 和 $b 在这里是完全相同的,这并不是 $a 指向了 $b 或者相反,而是 $a 和 阅读全文
posted @ 2011-10-25 15:58
南山砍柴的
阅读(299)
评论(0)
推荐(0)
摘要:
警告 本扩展模块是实验性的。该模块的行为,包括其函数的名称以及其它任何关于此模块的文档可能会在没有通知的情况下随 PHP 以后的发布而改变。我们提醒您在使用本扩展模块的同时自担风险。 在 PHP 5 中,对象的比较比在 PHP 4 中更复杂,也比我们就某一面向对象语言期望的要多 (尽管 PHP 5 不是一种面向对象语言)。当使用比较操作符(==)时,对象以一种很简单的规则比较:当两个对象有相同的属性和值,属于同一个类且被定义在相同的命名空间中,则两个对象相等。另一方面,当使用全等符(===)时,当且仅当两个对象指向相同类(在某一特定的命名空间中)的同一个对象时才相等。以下范例将阐明该规则。 例 阅读全文
posted @ 2011-10-25 15:05
南山砍柴的
阅读(120)
评论(0)
推荐(0)
摘要:
在 PHP 4 中,对象比较的规则十分简单:如果两个对象的类相同,且它们有相同的属性和值,则这两个对象相等。类似的规则还适用与用全等符(===)对两个对象的比较。如果我们执行以下范例中的代码: If we were to execute the code in the example below: 例子 13-1. PHP 4 中对象比较范例<?phpfunction bool2str($bool) { if ($bool === false) { return 'FALSE'; } else { return 'TRUE'; }}function com 阅读全文
posted @ 2011-10-25 15:03
南山砍柴的
阅读(155)
评论(0)
推荐(0)
摘要:
在构造函数中创建引用可能会导致混淆的结果。本节以教程形式帮助避免问题。<?phpclass Foo{ function Foo($name) { // 在全局数组 $globalref 中建立一个引用 global $globalref; $globalref[] = &$this; // 将名字设定为传递的值 $this->setName($name); // 并输出之 $this->echoName(); } function echoName() { echo "<br>",$this->name; } function s 阅读全文
posted @ 2011-10-25 15:02
南山砍柴的
阅读(370)
评论(0)
推荐(0)
摘要:
魔术函数 __sleep 和 __wakeupserialize() 检查类中是否有魔术名称 __sleep 的函数。如果这样,该函数将在任何序列化之前运行。它可以清除对象并应该返回一个包含有该对象中应被序列化的所有变量名的数组。使用 __sleep 的目的是关闭对象可能具有的任何数据库连接,提交等待中的数据或进行类似的清除任务。此外,如果有非常大的对象而并不需要完全储存下来时此函数也很有用。相反地,unserialize() 检查具有魔术名称 __wakeup 的函数的存在。如果存在,此函数可以重建对象可能具有的任何资源。使用 __wakeup 的目的是重建在序列化中可能丢失的任何数据库连接 阅读全文
posted @ 2011-10-25 14:59
南山砍柴的
阅读(185)
评论(0)
推荐(0)
摘要:
注: 在 PHP 3 中,在序列化和解序列化的过程中对象会失去类的关联。结果的变量是对象类型,但是没有类和方法,因此就没什么用了(就好像一个用滑稽的语法定义的数组一样)。注意 以下信息仅在 PHP 4 中有效。 serialize() 返回一个字符串,包含着可以储存于 PHP 的任何值的字节流表示。unserialize() 可以用此字符串来重建原始的变量值。用序列化来保存对象可以保存对象中的所有变量。对象中的函数不会被保存,只有类的名称。要能够 unserialize() 一个对象,需要定义该对象的类。也就是,如果序列化了 page1.php 中类 A 的对象 $a,将得到一个指向类 A 的 阅读全文
posted @ 2011-10-25 14:57
南山砍柴的
阅读(171)
评论(0)
推荐(0)
摘要:
你可能会发现自己写的代码访问了基类的变量和函数。如果派生类非常精炼或者基类非常专业化的时候尤其是这样。不要用代码中基类文字上的名字,应该用特殊的名字 parent,它指的就是派生类在 extends 声明中所指的基类的名字。这样做可以避免在多个地方使用基类的名字。 如果继承树在实现的过程中要修改,只要简单地修改类中 extends 声明的部分。<?phpclass A{ function example() { echo "I am A::example() and provide basic functionality.<br>\n"; }}class 阅读全文
posted @ 2011-10-25 14:55
南山砍柴的
阅读(203)
评论(0)
推荐(0)
摘要:
注意 下列内容仅在 PHP 4 及以后版本中有效。 有时,在没有声明任何实例的情况下访问类中的函数或者基类中的函数和变量很有用处。而 :: 运算符即用于此情况。<?phpclass A{ function example() { echo "I am the original function A::example().<br>\n"; }}class B extends A{ function example() { echo "I am the redefined function B::example().<br>\n" 阅读全文
posted @ 2011-10-25 14:50
南山砍柴的
阅读(2062)
评论(0)
推荐(0)
摘要:
注意 PHP 3 和 PHP4 的构造函数有所不同。PHP 4 的语义更可取。 构造函数是类中的一个特殊函数,当使用 new 操作符创建一个类的实例时,构造函数将会自动调用。PHP 3 中,当函数与类同名时,这个函数将成为构造函数。PHP 4 中,在类里定义的函数与类同名时,这个函数将成为一个构造函数 - 区别很微妙,但非常关键(见下文)。<?php// PHP 3 和 PHP 4 中都能用class Auto_Cart extends Cart{ function Auto_Cart() { $this->add_item ("10", 1); }}?> 阅读全文
posted @ 2011-10-25 14:49
南山砍柴的
阅读(175)
评论(0)
推荐(0)
摘要:
继承通常你需要这样一些类,这些类与其它现有的类拥有相同变量和函数。实际上,定义一个通用类,用于你所有的项目,并且不断丰富这个类以适应你的每个具体项目,将是一个不错的练习。为了使这一点变得更加容易,类可以从其它的类中扩展出来。扩展或派生出来的类拥有其基类(这称为“继承”,只不过没人死)的所有变量和函数,并包含所有你在派生类中定义的部分。类中的元素不可能减少,就是说,不可以注销任何存在的函数或者变量。一个扩充类总是依赖一个单独的基类,也就是说,多继承是不支持的。使用关键字“extends”来扩展一个类。<?phpclass Named_Cart extends Cart{ var $owne 阅读全文
posted @ 2011-10-25 14:48
南山砍柴的
阅读(148)
评论(0)
推荐(0)
浙公网安备 33010602011771号