background image

 
11> 

 

析构方法 __destruct() 

 
12> __clone(); 与

clone

 

关键字的区别

class

 CopyMe(); 

$first

new

 CopyMe(); 

$second

=

$first

// PHP4 : $first 和$second 是两个完全不同的对象; 
// PHP5: $first 和$second

 

指向同一个对象

PHP5 中, 对象的赋值和传递都是引用. 
如果要拷贝,就要用: 

$second

clone

 

$first

//现在$first 和$second 是两个完全不同的对象,

(by_value copy) 

如果要想控制复制, 要通过实现一个特殊方法__clone() 
 
13> 自动加载: __autoload() 
PHP5 引入__autoload()拦截器方法来自动包含类文件.当 PHP 遇到试图实例化一个未知类
的操作时,会尝试调用__autoload()方法,并将类名当作字符串参数传递给它. 
例如一个很简单的自动定位和包含策略: 

function

 __autoload( 

$classname

){ 

includ_once "$classname.php"; 

 
==================== 
14>

 

使用字符串动态引用类

代码如下:
 

$classname

="Task"; 

require_once

("tasks/{

$classname

}.php); 

$myObj

new

 

$classname

(); 

$method

="getTitle"; 

$myObj

->

$method

(); 

//

 

动态方法

 
15>

 

类函数和对象函数

代码如下:
 
class_exist(); 

//

 

检查类是否存在

get_declared_classes(); 

//获得当前脚本进程中定义的所有类(array 形式返回) 

get_class_methods();

//类中所有的 public 方法列表(array) 

method_exist(

$objname

,

$method

); 

//

 

对象或类的方法是否存在

is_callable

();

//对象或类的方法不仅存在,

 

且能访问

get_class_vars(); 

// 

 

属性

get_parent_class(类或对象名称); 

//

 

父类

is_subclass_of

(); 

//是否子类,不管接口,

 

接口用 instanceof

 

操作符