__construct()
这是一个构造方法,在创建一个对象时自动调用,它可以用来初始化对象的属性和执行其他必要的操作
class MyClass { public function __construct() { echo "对象已创建!"; } }
$obj = new MyClass();
|
__destruct()
这是一个析构方法,在对象被销毁时自动调用,它可以用来进行清理操作,例如关闭数据库连接或释放资源
class MyClass { public function __destruct() { echo "对象已销毁!"; } }
$obj = new MyClass(); unset($obj);
|
__get($property)
当访问一个类的私有属性时自动调用,它接收要访问的属性名作为参数,并返回属性的值
class MyClass { private $name = "Ella";
public function __get($property) { if (property_exists($this, $property)) { return $this->$property; } else { return "属性不存在!"; } } }
$obj = new MyClass(); echo $obj->name; echo $obj->age;
|
__set($property, $value)
当给一个类的私有属性赋值时自动调用,它接收要设置的属性名和属性值作为参数,并将属性的值设置为指定的值
class MyClass { private $name;
public function __set($property, $value) { if ($property === "name") { $this->name = $value; } else { echo "属性不存在!"; } } }
$obj = new MyClass(); $obj->name = "Ella"; echo $obj->name; $obj->age = 25;
|
__isset($property)
当使用 isset()
函数或 empty()
函数检查一个类的私有属性是否存在或为空时自动调用,它接收要检查的属性名作为参数,并返回一个布尔值
class MyClass { private $name = "Ella";
public function __isset($property) { return property_exists($this, $property); } }
$obj = new MyClass(); var_dump(isset($obj->name)); var_dump(isset($obj->age));
|
__unset($property)
当使用 unset()
函数删除一个类的私有属性时自动调用,它接收要删除的属性名作为参数
class MyClass { private $name = "Ella";
public function __unset($property) { echo "属性被删除!"; } }
$obj = new MyClass(); unset($obj->name);
|
__call($method, $args)
当调用一个类中不存在或不可访问的方法时自动调用,它接收要调用的方法名和传递给方法的参数数组作为参数
class MyClass { public function __call($method, $args) { echo "调用的方法:$method,参数:" . implode(", ", $args); } }
$obj = new MyClass(); $obj->doSomething("参数1", "参数2");
|
__callStatic($method, $args)
当调用一个不存在或不可访问的静态方法时自动调用,它接收要调用的方法名和传递给方法的参数数组作为参数
class MyClass { public static function __callStatic($method, $args) { echo "调用的静态方法:$method,参数:" . implode(", ", $args); } }
MyClass::doSomething("参数1", "参数2");
|
__toString()
当将一个对象转换为字符串时自动调用,它没有任何参数,并返回一个表示对象的字符串
class MyClass { public function __toString() { return "这是一个对象的字符串表示!"; } }
$obj = new MyClass(); echo $obj;
|
__invoke($args)
当尝试将一个对象作为函数调用时自动调用,它接收传递给函数的参数数组,并返回一个结果
class MyClass { public function __invoke($args) { echo "调用了对象作为函数,参数:" . implode(", ", $args); } }
$obj = new MyClass(); $obj(["参数1", "参数2"]);
|
__clone()
当使用 clone
关键字复制一个对象时自动调用,它可以用来执行一些特殊的克隆操作
class MyClass { public function __clone() { echo "对象已被克隆!"; } }
$obj1 = new MyClass(); $obj2 = clone $obj1;
|