简介

在很多脚本类语言中都是有魔术方法的,就比如php、python。虽然之前也知道,但是并不是专业的所以并不了解。
typecho插件开发过程中又用到魔术方法,故将常用的魔术方法记录于此。

详解

php魔术方法

__construct()类的构造方法,在创建对象时自动调用。
__destruct()类的析构方法,在对象即将被销毁时自动调用。
__get($property)获取类中不存在或不可访问属性时自动调用。
__set($property, $value)给类中不存在或不可访问属性赋值时自动调用。
__isset($property)当对不可访问属性使用 isset() 或 empty() 函数时自动调用。
__unset($property)当对不可访问属性使用 unset() 函数时自动调用。
__call($method, $arguments)调用类中不存在或不可访问方法时自动调用。
__toString()将对象作为字符串使用时自动调用。
__clone()对象复制时自动调用。
__sleep()在对象序列化时自动调用,可用于定义哪些属性需要被序列化。
__wakeup()在对象反序列化时自动调用,可用于恢复对象的状态。

python魔术方法

__init__(self, ...)类的构造方法,在创建对象时自动调用。
__del__(self)对象被销毁时自动调用的析构方法。
__str__(self)将对象转换为字符串时自动调用。
__repr__(self)返回对象的字符串表示形式,主要用于调试目的。
__len__(self)返回对象的长度。
__getitem__(self, key)获取指定键值的元素。
__setitem__(self, key, value)设置指定键值的元素。
__delitem__(self, key)删除指定键值的元素。
__iter__(self)返回一个可迭代对象,用于在循环中迭代。
__next__(self)在迭代器中返回下一个元素。
__contains__(self, item)判断某个元素是否存在于对象中。
__call__(self, ...)当对象被调用时触发,使对象可像函数一样使用。