类的自动加载
spl_autoload_register()
将给定的函数注册到 SPL 的 __autoload
函数队列中
spl_autoload_register ([ callable $autoload_function [, bool $throw = true [, bool $prepend = false ]]] ) : bool
autoload_function
欲注册的自动加载函数。如果没有提供任何参数,则自动注册
__autoload
的默认实现函数spl_autoload()
。throw
此参数设置了 autoload_function 无法成功注册时,是否抛出异常。
prepend
如果是 true,会添加函数到队列之首,而不是队列尾部。
可以注册多条 autoload 函数。它实际上创建了 autoload 函数的队列,按定义时的顺序逐个执行
成功时返回 TRUE, 或者在失败时返回 FALSE。
spl_autoload
__autoload()函数的默认实现
spl_autoload ( string $class_name [, string $file_extensions ] ) : void
class_name
类名
file_extensions
在默认情况下,本函数先将类名转换成小写,再在小写的类名后加上 .inc 或 .php 的扩展名作为文件名,然后在所有的包含路径(include paths)中检查是否存在该文件。
如果不使用任何参数调用 spl_autoload_register() 函数,则以后在进行 __autoload() 调用时会自动使用此函数
spl_autoload 函数在其他地方调用没有任何意义
没有返回值
__autoload
函数也能自动加载类和接口,但只能定义一个自动加载器
从 7.2.0 开始,已不赞成使用
是否存在
class_exists
检查类是否已定义
class_exists( string $class_name[, bool $autoload = true] ) : bool
class_name
类名。名字的匹配是不分区大小写的。
autoload
是否自动调用 __autoload,默认为 true
如果由 class_name 所指的类已经定义,此函数返回 TRUE,否则返回 FALSE。
interface_exists
检查接口是否已被定义
interface_exists( string $interface_name[, bool $autoload = true] ) : bool
interface_name
接口名。名字的匹配是不分区大小写的。
autoload
是否自动调用 __autoload,默认为 true
如果由 interface_name 所指的接口已经定义,此函数返回 TRUE,否则返回 FALSE。
trait_exists
检查指定的 trait 是否存在
trait_exists( string $traitname[, bool $autoload = true] ) : bool
traitname
待检查的 trait 的名称
autoload
如果尚未加载,是否使用自动加载(autoload)。
如果 trait 存在返回 TRUE,不存在则返回 FALSE。发生错误的时候返回 NULL。
method_exists
检查类的方法是否存在
method_exists( mixed $object, string $method_name) : bool
object
对象实例或者类名。
method_name
方法名。
如果 method_name 所指的方法在 object 所指的对象类中已定义,则返回 TRUE,否则返回 FALSE。
property_exists
检查对象或类是否具有该属性
property_exists( mixed $class, string $property) : bool
class
对象实例或者类名
property
属性的名字
如果该属性存在则返回 TRUE,如果不存在则返回 FALSE,出错返回 NULL
调用对象的方法
call_user_method
对特定对象调用用户方法
此函数在 7.0 已移除,使用 call_user_func()
call_user_method_array
以参数列表的数组,调用用户方法
此函数在 7.0 已移除,使用 call_user_func_array()
判断对象与类的关系
is_a
如果对象属于该类或该类是此对象的父类则返回 TRUE
is_a( object $object, string $class_name[, bool $allow_string = FALSE] ) : bool
object
对象
class_name
类名
allow_string
如果此参数设置为 TRUE,则参数
object
允许使用字符串类名,默认为 FALSE 不允许
如果 object 属于 class_name 或 class_name 是 object 的父类,或者 object 所属的类名实现了 class_name 接口则返回 TRUE
PHP 5 之后,通常使用 instanceof
替代此函数
is_subclass_of
如果此对象是该类的子类,则返回 TRUE
is_subclass_of ( mixed $object , string $class_name [, bool $allow_string = TRUE ] ) : bool
object
对象
class_name
类名
allow_string
如果此参数设置为 TRUE,则参数
object
允许使用字符串类名,默认为 FALSE 不允许
如果对象 object 所属类是类 class_name 的子类,则返回 TRUE,否则返回 FALSE。
获取已定义的类、接口、traits
get_declared_classes
返回由当前脚本中已定义类的名字组成的数组
get_declared_classes( void) : array
get_declared_interfaces
get_declared_interfaces( void) : array
返回一个数组包含所有已声明的接口
get_declared_traits
get_declared_traits( void) : array
返回所有已定义的 traits 的数组
获取对象的类、父类、属性
get_called_class
后期静态绑定(”Late Static Binding”)类的名称
get_called_class( void) : string
返回静态方法调用的类名。 如果不是在类中调用则返回 FALSE。
get_class
返回对象的类名
get_class([ object $object = NULL] ) : string
object
指定的对象。如果在类里,此参数可以省略
返回对象实例 object 所属类的名字。如果 object 不是一个对象则返回 FALSE。
如果在一个类里,省略了参数 object,则返回当前所在类的名称。
如果 object 是命名空间中某个类的实例,则会返回带上命名空间的类名。
get_parent_class
返回对象或类的父类名
get_parent_class([ mixed $obj] ) : string
object
指定的对象。如果在类里,此参数可以省略
如果 obj 是对象,则返回对象实例 obj 所属类的父类名。
如果 obj 是字符串,则返回以此字符串为名的类的父类名
get_object_vars
返回由对象属性组成的关联数组
get_object_vars( object $obj) : array
object
对象实例
返回由 obj 指定的对象中定义的属性组成的关联数组
获取类的属性和方法
get_class_vars
返回由类的默认公有属性组成的关联数组
get_class_vars( string $class_name) : array
class_name
类名
get_class_methods
返回由类的方法名组成的数组
get_class_methods( mixed $class_name) : array
class_name
类名或对象实例
别名
class_alias
为一个类创建别名
class_alias( string $original, string $alias[, bool $autoload = TRUE] ) : bool
original
原有的类。
alias
类的别名。
autoload
如果原始类没有加载,是否使用自动加载(autoload)。
成功时返回 TRUE, 或者在失败时返回 FALSE。