紫气东来 | 2023-08-28 23:42:25 | 编程 | 1
php动态属性赋值
在php中魔术方法是一种特殊的方法,当对对象执行某些操作时会覆盖 PHP 的默认操作。
PHP 保留所有以 __ 开头的方法名称。 因此,除非覆盖 PHP 的行为,否则不建议使用此类方法名称。
下列方法名被认为是魔术方法: __construct()、 __destruct()、 __call()、 __callStatic()、 __get()、 __set()、 __isset()、 __unset()、 __sleep()、 __wakeup()、 __serialize()、 __unserialize()、 __toString()、 __invoke()、 __set_state()、 __clone()、 __debugInfo()。
在给不可访问(protected 或 private)或不存在的属性赋值时,__set() 会被调用。
读取不可访问(protected 或 private)或不存在的属性的值时,__get() 会被调用。
当对不可访问(protected 或 private)或不存在的属性调用 isset() 或 empty() 时,__isset() 会被调用。
当对不可访问(protected 或 private)或不存在的属性调用 unset() 时,__unset() 会被调用。
以下是php中使用魔术方法动态给对象的属性赋值。
<?php class Myclass { private $data = []; public function __get($name) { if (array_key_exists($name, $this->data)) { return $this->data[$name]; } return null; } public function __set($name, $value) { $this->data[$name] = $value; } public function __isset($name) { return isset($this->data[$name]); } public function __unset($name) { unset($this->data[$name]); } } $obj = new Myclass(); //设置 $obj->name = "tosry"; $obj->age = 30; //获取 echo $obj->name; echo $obj->age; //检查是否存在 if (isset($obj->name)) { echo "Name is set. "; } 删除 unset($obj->age);
上一篇:base64转码解码
下一篇:网页计算器