PHP常用的魔术方法及规则
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常用的魔术方法及规则的更多相关文章
- php面向对象类中常用的魔术方法
php面向对象类中常用的魔术方法 1.__construct():构造方法,当类被实例化new $class时被自动调用的方法,在类的继承中可以继承与覆盖该方法,例: //__construct( ...
- PHP中常用的魔术方法
我们在PHP中经常用到魔术方法,像构造方法,析构方法等等魔术变量,下面总结一下一些常用的魔术变量: __construct(),__destruct(),__clone(),__autoload(), ...
- php常用的魔术方法
__construct:构造函数,一旦创建对象都就会自动调用 __call:当调用了未定义的方法时会自动触发 __set:当给类外部不可访问的属性设置值时会自动触发 __get:当获取类外部不可访问的 ...
- PHP序列化、反序列化常用的魔术方法
__wakeup() //使用unserialize时触发__sleep() //使用serialize时触发__destruct() //对象被销毁时触发__call() //在对象上下文中调用不可 ...
- php中的重载以及几个常用的魔术方法示例
在面向对象语言中,有一个很重要的概念——overload,即重载.所谓重载,一般是用于在一个类内实现若干重载的方法,这些方法的名称相同而参数形式不同.但是,在php中,这个概念跟大多面向对象语言中的“ ...
- PHP面向对象中常用的关键字和魔术方法
PHP面向对象中常用的关键字 final 1.final不能修饰成员属性(类中常量不是用这个关键字) 2.final只能修饰类和方法 作用: 使用fi ...
- php中的常用魔术方法总结
以下是对php中的常用魔术方法进行了详细的总结介绍,需要的朋友可以过来参考下 常用的魔术方法有:__Tostring () __Call() __autoLoad() __ clone() __GET ...
- PHP之魔术方法
PHP中的魔术方法: PHP的魔术方法主要是在特定的条件下执行相应的魔术方法.这和很多框架中的钩子函数有些类似,不同的是,钩子函数是在生命周期的某个周期内自动执行,而魔术方法是在触发某种条件下自动 ...
- Python 类的魔术方法
Python中类的魔术方法 在Python中以两个下划线开头的方法,__init__.__str__.__doc__.__new__等,被称为"魔术方法"(Magic method ...
随机推荐
- 《MySQL实战45讲》学习笔记2——MySQL的日志系统
一.日志类型 逻辑日志:存储了逻辑SQL修改语句 物理日志:存储了数据被修改的值 二.binlog 1.定义 binlog 是 MySQL 的逻辑日志,也叫二进制日志.归档日志,由 MySQL Ser ...
- EntityFramework执行Add-Miragtion或者Update-Database出闲ScriptHalted
今天基友在他本机运行我的项目,执行ef还原数据的时候,一直出现ScriptHalted的错误. 找了下百度,只找到一个stackoverflowd的答案,没有看到中文的解决方案. 现在总结一下,并给出 ...
- 微信小程序和asp.net core基于docker和nginx的交互
这个文章的题目起的比较长,我想实现这样一个产品: 前端是微信小程序,后端是基于docker运行的asp.net core webapi.webapi通过nginx实现的反向代理接入,nginx同样基于 ...
- ASP.NET SignalR 系列(九)之源码与总结
1.SignalR 1.0与2.0有些不同,以上篇章均只支持2.0+ 2.必须注意客户端调用服务端对象和方法时的大小写问题 3.客户端上的方法不能重名 4.IE7及以下的,需要增加json的分析器,分 ...
- RabbitMQ的简单模式快速入门与超时异常的处理方法
本文适合JAVA新人,想了解RabbitMQ又不想去看官网文档的人(英语水看的头疼(◎﹏◎),但建议有能力还是去看官网文档). 消息队列MQ(一) MQ全称为Message Queue,消息队列是应用 ...
- Macaca app inspector-ios真机设备UI查看器
前言: App Inspector:浏览器端的移动设备 UI 查看器,使用树状态结构查看 UI 布局,自动生成 XPaths.官网:https://macacajs.github.io/app-ins ...
- Android-----CheckBox复选使用(实现简单选餐)
直接上代码: xml布局: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmln ...
- idea git提交代码步骤(转载)
参考一: https://blog.csdn.net/u013452337/article/details/79956604
- Django-ModelFrom中修改save后的字段值
在ModelForm提交中,保持原未修改字段的值,views中部分代码: project = Iredmail.objects.get(id=id) ssh_crt_name = project.ss ...
- 自定义View(五),onLayout
转自http://blog.csdn.net/a396901990/article/details/38129669 简介: 在自定义view的时候,其实很简单,只需要知道3步骤: 1.测量——onM ...