__autoload是一个强大的工具,但是也存在一些局限性。尤其是,在一个进程中你只能定义它一次。当php引擎遇到试图实例化未知类的操作时会调用此方法。
function __autoload( $classname ) {
include_once("$classname.php");
}
$product = new ShopProduct( 'The Darkening', 'Harry', 'Hunter', 12.99 );
查找类
• class_exista()接收表示类的字符串返回布尔值
• get_declared_classes()获取当前脚本进程中定义的所有类,以数组方式返回
• get_class()检测对象的类,以字符串的形式返回对象的类名。
• instanceof检测对象是不是给定类型的实例
• get_class_methods()得到类中的所有方法,返回数组格式。
• is_callable()检测类中的方法是否可以被调用,返回布尔值。
• get_class_vars()接收类名返回属性的键值对数组
了解继承• get_parent_class()查找类的父类
• Is_subclass_of()检测类是否是另一个类的派生类,不会告诉你类实现的接口。
• Class_implements()接收一个类名或对象返回他实现的接口。
普通的方法调用
$product = getProduct();//获取对象
$method = "getTitle"; //定义方法名
print $product->method;
call_user_func(array(对象,方法名),可选参数)方式的调用 。为了避免当调用的方法不存在时产生错误,可以使用 __call() 方法来避免。该方法在调用的方法不存在时会自动调用,程序仍会继续执行下去。
class Ass{
function __call($function_name, $args){
echo "你所调用的函数:$function_name(参数:<br />";
var_dump($args);
echo ")不存在!";
}
}
$ass=new Ass();
$ass->a();