魔术方法是PHP一项非常有特点实用的方法
注意:PHP 将所有以 __(两个下划线)开头的类方法保留为魔术方法。
void __construct ([ mixed $args [, $... ]] ): 构造函数,在new构造对象时,会自动的调用此方法
void __destruct ( void ) : 析构函数,析构函数会在到某个对象的所有引用都被删除或者当对象被显式销毁时执行。
public void __set ( string $name , mixed $value ): 在给不可访问属性赋值时,__set() 会被调用。
public mixed __get ( string $name ): 读取不可访问属性的值时,__get() 会被调用。
public bool __isset ( string $name ): 当对不可访问属性调用 isset() 或 empty() 时,__isset() 会被调用
public void __unset ( string $name ): 当对不可访问属性调用 unset() 时,__unset() 会被调用
public mixed __call ( string $name , array $arguments ): 在对象中调用一个不可访问方法时,会被调用。
public static mixed __callStatic ( string $name , array $arguments ): 在静态上下文中调用一个不可访问方法时,会被调用。
public array __sleep ( void ): 如果存在,用serialize()方法时会调用
void __wakeup ( void ): 如果存在,用unserialize()方法时会调用
public string __toString ( void ): 一个类被当成字符串时应怎样回应
mixed __invoke ([ $... ] ): 当尝试以调用函数的方式调用一个对象时,被自动调用。
static object __set_state ( array $properties ): 当调用 var_export() 导出类时,此静态 方法会被调用。
void __clone ( void ): 则新创建的对象(复制生成的对象clone $aa)中的 __clone() 方法会被调用,可用于修改属性的值(如果有必要的话) $that 表示原来的属性
__autoload($className){} : 类的自动加载功能
常见关键字
final : 可以在类或方法前使用
- 被final标识的类不能被继承
- 被final标识的方法不能被覆盖
static : 标识静态属性或静态方法
class Demo{
static $name = 'cwj95' ;
static function showName(){
return 'cwj95';
}
}
Demo::name ====> 输出 cwj95
Demo::showName() ====> 输出 cwj95
const : 类中定义常量的方法
将类中的成员属性使用const 关键字标识为常量,访问的方式和静态成员一样,都是通过类名或在成员方法中使用self关键字访问,也不能用对象来访问. 标识为常量的属性是只读的
不能重新赋值,如果在程序中试图改变它的值,则会出现错误.所以在申明常量时一定要给初值,因为没有其他方式后期为常量赋值.注:使用const 声明的常量名称前不要使用” $ “符号,名称通常都是大写的。
clone : 克隆对象
可以根据现有的对象克除出一个完全一样的对象
serialization \ unserialization: 对象串行化 和 反串行化
有两种情况我们必须把对象串行化:
-
要在网络中传输时,将对象串行化成二进制串后在网络中传输
-
需要持久保存时,将对象E和行化后写入文件或是数据库中
serializeO函数需要一个参数就是对象的引用名,返回值为一个对象被串行化后的字符串
unserializeO 函数来反串行化一个对象
还有__FILE__呢。
那些是 魔术常量,在基础知识写了 🙂 http://cwj95.com/755.html
好吧,弄混淆了