对象处理:10个必备的PHP对象函数
1. get_class(): 获取对象的类名
get_class() 函数返回一个字符串,表示传入对象的类名。例如:
class MyClass {}
$obj = new MyClass();
echo get_class($obj); // 输出: "MyClass"
2. is_object(): 判断是否是对象
is_object() 函数用于判断传入参数是否为对象。如果是,返回 true,否则返回 false。例如:
$obj = new stdClass(); var_dump(is_object($obj)); // 输出: true
3. method_exists(): 判断方法是否存在
method_exists() 函数用于检查对象是否具有指定方法。如果对象具有指定方法,则返回 true,否则返回 false。例如:
class MyClass {
public function myMethod() {}
}
$obj = new MyClass();
var_dump(method_exists($obj, 'myMethod')); // 输出: true
4. property_exists(): 判断属性是否存在
property_exists() 函数用于检查对象是否具有指定属性。如果对象具有指定属性,则返回 true,否则返回 false。例如:
class MyClass {
public $myProperty;
}
$obj = new MyClass();
var_dump(property_exists($obj, 'myProperty')); // 输出: true
5. clone(): 复制对象
clone() 函数用于创建对象的一个副本。复制后的对象和原对象具有相同的属性和方法。可以通过 __clone() 魔术方法来控制对象的复制过程。例如:
class MyClass {
public $myProperty;
public function __clone() {
$this->myProperty = 'default value';
}
}
$obj1 = new MyClass();
$obj1->myProperty = 'new value';
$obj2 = clone $obj1;
echo $obj1->myProperty; // 输出: "new value"
echo $obj2->myProperty; // 输出: "default value"
6. serialize(): 序列化对象
serialize() 函数用于将对象转换为字符串。序列化后的字符串包含对象的所有属性和方法。可以通过 unserialize() 函数将字符串转换回对象。例如:
class MyClass {
public $myProperty;
}
$obj = new MyClass();
$obj->myProperty = 'my value';
$str = serialize($obj);
$obj2 = unserialize($str);
echo $obj2->myProperty; // 输出: "my value"
7. get_object_vars(): 获取对象的属性
get_object_vars() 函数用于获取对象的所有属性和属性值。返回值是一个关联数组。例如:
class MyClass {
public $property1 = 'value1';
public $property2 = 'value2';
}
$obj = new MyClass();
$vars = get_object_vars($obj);
var_dump($vars); // 输出: ["property1" => "value1", "property2" => "value2"]
8. class_parents(): 获取类的所有父类
class_parents() 函数用于获取指定类的所有父类。返回值是一个数组,数组中的元素是类名。例如:
class BaseClass {}
class MyClass extends BaseClass {}
class MyDerivedClass extends MyClass {}
$parents = class_parents('MyDerivedClass');
var_dump($parents); // 输出: ["MyClass", "BaseClass"]
9. is_a(): 判断对象是否是指定类的实例
is_a() 函数用于判断对象是否是指定类的实例。如果是,返回 true,否则返回 false。可以使用第二个参数来指定是否检查继承关系。例如:
class BaseClass {}
class MyClass extends BaseClass {}
$obj = new MyClass();
var_dump(is_a($obj, 'MyClass')); // 输出: true
var_dump(is_a($obj, 'BaseClass')); // 输出: true
var_dump(is_a($obj, 'stdClass')); // 输出: false
10. get_class_methods(): 获取类的所有方法
get_class_methods() 函数用于获取指定类的所有方法。返回值是一个数组,数组中的元素是方法名。例如:
class MyClass {
public function method1() {}
protected function method2() {}
private function method3() {}
}
$methods = get_class_methods('MyClass');
var_dump($methods); // 输出: ["method1", "method2", "method3"]
