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
操作符