一梦千年系列
今日函数
class_alias
、class_exists
、get_called_class
、get_class_methods
、get_class_vars
class_alias1
为类创建一个别名
- 说明
class_alias(string $original, string $alias, bool $autoload = true) : bool
- 参数
original
原来类的名称
alias
类的别名
autoload
是否自动加载
- 返回值
成功返回true,失败返回false
- 范例
class A {}
class_alias('A', 'B');
$obj1 = new A();
$obj2 = new B();
var_dump($obj1 instanceof $obj2);
以上范例会输出
bool(true)
- 特别注意
别名和原有的类完全相同
class_exists2
检查类是否定义
- 说明
class_exists(string $class, bool $autoload = true) : bool
- 参数
class
需要检查的类名
autoload
是否自动加载
- 返回值
类定义了返回true,否则返回false
- 范例
$res = class_exists('A');
var_dump($res);
以上范例输出
bool(false)
get_called_class3
获取后期静态绑定的类名,经过测试发现动态方法也可以使用
- 说明
get_called_class() : string
- 返回值
返回调用方法的类名,如果不是在类中调用的则返回false
- 范例
class A
{
public static function test()
{
var_dump(get_called_class());
}
}
class B extends A
{}
A::test();
B::test();
以上范例输出
string(1) "A"
string(1) "B"
get_class_methods4
返回由类中方法名组成的数组,必须是public的方法,不区分静态和动态
- 说明
get_class_methods(mixed $class) : array
- 参数
class
类的名称或者对象
- 返回值
返回由方法组成的数组
- 范例
class A
{
public function test()
{}
protected function demo()
{}
private function hello()
{}
}
$res = get_class_methods('A');
print_r($res);
以上范例输出
Array
(
[0] => test
[1] => hello1
)
- 特别说明
必须是公共方法,不区分静态、动态
get_class_vars5
返回由类属性组成的数组,属性名是键名,属性值是键值,必须是公共属性,不区分静态和动态
- 说明
get_class_vars(mixed $class) : array
- 参数
class
需要操作的类名或者对象
- 返回值
返回由属性名和属性值组成的数组
- 范例
class A
{
public $name = 'swk';
protected $age = 22;
private $sex = 1;
}
$res = get_class_vars('A');
print_r($res);
以上范例输出
Array
(
[name] => swk
)
- 特别说明
必须是公共属性,不区分静态和动态