1. __construct 具有构造函数的类会在每次创建新对象时先调用此方法;初始化工作执行。
2. __desstruct 对象的所有引用都被删除或者当对象被显式销毁时执行。
3.__call()在对象中调用一个不可访问方法时,__call() 会被调用。
4.__callStatic()在静态上下文中调用一个不可访问方法时,__callStatic() 会被调用。
5.__set() 在给不可访问的属性赋值时调用
6.__get() 读取不可访问的属性值是自动调用
7.__isset() 当对不可访问的私有属性使用isset或empty时自动调用
8.__unset() 当对不可访问的私有属性使用unset时;自动调用
9.__toString()当一个类的实例对象;被当成一个字符串输出时调用

<?php
class a
{ private $name = 'wang san'; //设置私有属性
public function __set($a,$val){
echo "属性:'$a' 值: '$val' 在直接设置私有属性值的时候,自动调用了这个__set()方法为私有属性赋值\n";
$this->$a = $val;
}
//获取私有属性
public function __get($a){
echo "属性:'$a' 在直接获取私有属性值的时候,自动调用了这个__get()方法\n";
return $this->$a;
}
/** 当对不可访问属性调用 isset() 或 empty() 时,__isset() 会被调用。*/
public function __isset($name)
{
echo "是否设置 '$name' 值?\n";
return isset($this->$name);
}
/** 当对不可访问属性调用 unset()会被调用。*/
public function __unset($name)
{
echo "销毁私有变量 '$name' 时调动";
unset($this->$name);
}
/* 方法用于一个类被当成字符串时应怎样回应 */
public function __toString() {
return $this->name;
}
} $test = new a(); echo $test.'<br>'; // 输出:wang san __toString()方法用于一个类被当成字符串时应怎样回应 $test->name = "中国人";
echo $test->name; //输出 中国人 因为使用了魔术方法 __get 和 __set var_dump(isset($test->name)); //返回 true
var_dump(empty($test->name)); //返回 false unset($test->name); //销毁时;自动调用__unset var_dump($test->name); //报错;未定义 Undefined property: a::$name

PHP常用的魔术方法及规则的更多相关文章

  1. php面向对象类中常用的魔术方法

    php面向对象类中常用的魔术方法   1.__construct():构造方法,当类被实例化new $class时被自动调用的方法,在类的继承中可以继承与覆盖该方法,例: //__construct( ...

  2. PHP中常用的魔术方法

    我们在PHP中经常用到魔术方法,像构造方法,析构方法等等魔术变量,下面总结一下一些常用的魔术变量: __construct(),__destruct(),__clone(),__autoload(), ...

  3. php常用的魔术方法

    __construct:构造函数,一旦创建对象都就会自动调用 __call:当调用了未定义的方法时会自动触发 __set:当给类外部不可访问的属性设置值时会自动触发 __get:当获取类外部不可访问的 ...

  4. PHP序列化、反序列化常用的魔术方法

    __wakeup() //使用unserialize时触发__sleep() //使用serialize时触发__destruct() //对象被销毁时触发__call() //在对象上下文中调用不可 ...

  5. php中的重载以及几个常用的魔术方法示例

    在面向对象语言中,有一个很重要的概念——overload,即重载.所谓重载,一般是用于在一个类内实现若干重载的方法,这些方法的名称相同而参数形式不同.但是,在php中,这个概念跟大多面向对象语言中的“ ...

  6. PHP面向对象中常用的关键字和魔术方法

    PHP面向对象中常用的关键字 final        1.final不能修饰成员属性(类中常量不是用这个关键字)        2.final只能修饰类和方法 作用:            使用fi ...

  7. php中的常用魔术方法总结

    以下是对php中的常用魔术方法进行了详细的总结介绍,需要的朋友可以过来参考下 常用的魔术方法有:__Tostring () __Call() __autoLoad() __ clone() __GET ...

  8. PHP之魔术方法

      PHP中的魔术方法: PHP的魔术方法主要是在特定的条件下执行相应的魔术方法.这和很多框架中的钩子函数有些类似,不同的是,钩子函数是在生命周期的某个周期内自动执行,而魔术方法是在触发某种条件下自动 ...

  9. Python 类的魔术方法

    Python中类的魔术方法 在Python中以两个下划线开头的方法,__init__.__str__.__doc__.__new__等,被称为"魔术方法"(Magic method ...

随机推荐

  1. 一个 Java 正则表达式例子

    今天在项目里看到用 Python 正则表达式的时候,用到 group,没有仔细看.正好学习 Java 正则表达式,对 group 多留意了一下. 上代码: import java.util.regex ...

  2. Eclipse中js文件修改后浏览器不能及时更新的解决办法

    项目中js文件修改后浏览器不能及时更新的解决办法 转载:http://www.codeweblog.com/%E9%A1%B9%E7%9B%AE%E4%B8%ADjs%E6%96%87%E4%BB%B ...

  3. 18 java I/O 系统

    流的类继承结构 我们首先看看流的类继承结构,有助于理解下个标签的内容 InputStream OutputStream Reader Writer File类 File类技能表示一个特定文件的名称,又 ...

  4. [Windows] - Windows/Office纯绿色一键激活工具及方法

    瘟到死网上有很多一件键激活工具(如KMS),但许多带毒或报毒.这里给出一个纯绿色命令行一键激活,及自已搭建激活服务器的方法. KMS现在算法都是公开的了,可以自行在网上找到,这里不详述. 使用命令行一 ...

  5. 并发编程--一堆锁,GIL,同步异步,Event事件

    目录 一堆锁 死锁现象(*****) 递归锁 RLock (了解) 信号量 (了解) GIL(*****) 什么时GIL锁 为什么需要GIL锁 Cpython解释器与GC的问题 GIL锁带来的问题 多 ...

  6. 英语kutnahorite金田黄kutnahorite单词

    金田黄是含镁和锰较多的方解石,学名是“镁锰方解石”或者“镁菱锰矿”,英文名为Kutnahorite,也可翻译为“锰白云石”.“金田黄”颜色艳丽,有红色.橙色或者黄色等不同色调,属于艳色方解石的集合体. ...

  7. 补充1:IDA的脚本IDC语言

    1.IDA脚本的打开与使用: IDA脚本两种语言:IDC(IDC,本地脚本语言)和Python 2.IDC语言介绍 1.IDC变量:IDC是一种松散的语言,没有明确的类型.使用3中数据类型,整数(ID ...

  8. ES6 对象解构赋值(浅拷贝 VS 深拷贝)

    对象的扩展运算符(...)用于取出参数对象的所有可遍历属性,拷贝到当前对象之中. 拷贝对象 let aa = { age: 18, name: 'aaa' } let bb = {...aa}; co ...

  9. spring boot如何处理异步请求异常

    springboot自定义错误页面 原创 2017年05月19日 13:26:46 标签: spring-boot   方法一:Spring Boot 将所有的错误默认映射到/error, 实现Err ...

  10. /bin/false 和 /usr/sbin/nologin

    比较常用的用法: #添加一个不能登录的用户 useradd -d /usr/local/apache -g apache -s /bin/false apache 要拒绝系统用户登录,可以将其shel ...