php常用的魔术方法
__construct:构造函数,一旦创建对象都就会自动调用
__call:当调用了未定义的方法时会自动触发
__set:当给类外部不可访问的属性设置值时会自动触发
__get:当获取类外部不可访问的属性时会自动触发
__isset:当对类外部不可访问的属性使用了isset()或empty()时会自动触发
__unset:当对类外部不可访问的属性使用了unset()时会自动触发
__destruct:当对象结束其生命周期时就会自动触发
<?php
header("content-type:text/html;charset=UTF-8");
class Magic{
private $testGet; //私有测试__get魔术方法的属性
private $testSet; //私有测试__set魔术方法的属性
private $testIsset; //私有测试__isset魔术方法的属性
private $testUnset; //私有测试__unset魔术方法的属性
public static $a=1; //私有用于测试__clone魔术方法的常量 /**
* 测试构成方法,创建新对象时先调用此方法
*/
public function __construct(){
echo static::$a+2;
echo "这是构造函数"."<br>"."<br>";
} /**
* 测试isset方法,这是当不可访问的属性被调用了isset()或者empty()方法时会触发
*/
public function __isset($name){
echo "对不可访问属性:".$name."调用 isset() 或 empty()"."<br>"."<br>";
} /**
* 测试unset方法,这是当不可访问的属性被调用了unset()方法时会触发
*/
public function __unset($name){
echo "当对不可访问属性:".$name."调用unset()"."<br>"."<br>";
} /**
* 测试call方法,这是当调用了未定义的方法时会触发
*/
public function __call($method,$agrs){
echo "调用了不存在的方法:".$method."<br>"."这是接收的参数:";
print_r($agrs);
echo "<br>"."<br>";
} /**
* 测试set方法,这是当不可访问的属性被设置时会触发
*/
public function __set($name,$data){
echo "调用了不可设置的属性:".$name."<br>"."参数为:".$data."<br>";
} /**
* 测试get方法,这是当不可访问的属性被访问时会触发
*/
public function __get($name){
echo "调用了不可获取的属性:".$name."<br>"."<br>";
} /**
* 测试clone方法,这是类被克隆时会触发
*/
public function __clone(){
echo static::$a+1;
echo "我被克隆了"."<br>"."<br>";
} /**
* 测试析构方法,这是当在脚本关闭时被调用
*/
public function __destruct(){
echo "这是析构函数";
}
} $test=new Magic(); //实例化Magic类,触发构造函数 $test->callMethod('123'); //调用不存在的方法 $test->testSet=123; //设置类外部不可访问的属性 $test->testGet; //获取类外部不可访问的属性 $test2=clone $test; //克隆test类,开辟了另一份一模一样的属性和方法存储空间,但相互不会影响
isset($test->testIsset); //用isset执行类外部不可访问的属性
unset($test->testUnset); //用unset执行类外部不可访问的属性
php常用的魔术方法的更多相关文章
- php面向对象类中常用的魔术方法
php面向对象类中常用的魔术方法 1.__construct():构造方法,当类被实例化new $class时被自动调用的方法,在类的继承中可以继承与覆盖该方法,例: //__construct( ...
- PHP中常用的魔术方法
我们在PHP中经常用到魔术方法,像构造方法,析构方法等等魔术变量,下面总结一下一些常用的魔术变量: __construct(),__destruct(),__clone(),__autoload(), ...
- PHP序列化、反序列化常用的魔术方法
__wakeup() //使用unserialize时触发__sleep() //使用serialize时触发__destruct() //对象被销毁时触发__call() //在对象上下文中调用不可 ...
- php中的重载以及几个常用的魔术方法示例
在面向对象语言中,有一个很重要的概念——overload,即重载.所谓重载,一般是用于在一个类内实现若干重载的方法,这些方法的名称相同而参数形式不同.但是,在php中,这个概念跟大多面向对象语言中的“ ...
- PHP常用的魔术方法及规则
1. __construct 具有构造函数的类会在每次创建新对象时先调用此方法;初始化工作执行.2. __desstruct 对象的所有引用都被删除或者当对象被显式销毁时执行.3.__call()在对 ...
- 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 ...
随机推荐
- 一、Vim编辑器 二、用户和组管理 三、软件的安装(jdk,mysql) 四、Shell编程
一.Vim编辑器的使用 1. vim编辑器的运行模式 编辑模式:等待用户编辑命令的输入 插入模式:编辑文本内容 命令模式:执行命令 2. 使用 :vim 文件名 3. 查看当前vim编辑器介绍:vim ...
- 'Table is Marked as crashed and should be repaired Error'.Mysql表损坏解决方案
问题表现:由于服务器崩溃导致表损坏无法打开或者能打开但是无法写入数据(提示主键重复但实际没有该主键且该主键值在最大值范围内). 本文提供两种检查修复方式:mysqlcheck 和 myisamchk ...
- HAproxy.md
HAProxy HAProxy是什么 HAProxy(High Available Proxy)是基于四层和七层的高可用负载均衡代理服务器,配置简单.支持多达上万条并发请求. HAProxy工作原理 ...
- Hive学习之路 (三)Hive元数据信息对应MySQL数据库表
概述 Hive 的元数据信息通常存储在关系型数据库中,常用MySQL数据库作为元数据库管理.上一篇hive的安装也是将元数据信息存放在MySQL数据库中. Hive的元数据信息在MySQL数据中有57 ...
- Jenkins + GitLab 通过 Webhook 自动触发构建爬坑记录
前言 在局域网搭建了一个Jenkins服务,用于自动构建和发布,在调通了构建程序之后,想使用内网的GitLab的Webhook功能触发代码推送事件,然后进行自动构建.后来发现在GitLab上做测试 ...
- saltstack之sls文件配置
state模块 state模块会调用它的sls函数处理一个以.sls结尾的配置文件. sls文件是YAML语言来进行描述的 缩进 不要使用`tab`因为tab是四个空格,而YAML是使用两个空格 冒号 ...
- java.lang.NoClassDefFoundError: org/apache/ibatis/mapping/DatabaseIdProvider
我用的方案是:maven+struts2+spring+mybatis 出现上述错误的原因是: <dependency> <groupId>org.myb ...
- python matplotlib quiver——画箭头、风场
理解参考:https://blog.csdn.net/liuchengzimozigreat/article/details/84566650 以下实例 import numpy as np impo ...
- overflow:hidden 影响inline-block元素周围元素下移
前言: 最近在切页中,我想实现左边一个类似下拉选框,且不允许输入,右边有一段垂直居中的文字描述的效果.我对文字用的是p标签.其实可以用个i/b/em等其他行内标签,同时也具有一定语义,做为强调提示,( ...
- HTML5知识点汇总(1)
HTML5 1.html5是什么 万维网的核心语言.标准通用标记语言下的一个应用超文本标记语言(HTML)的第五次重大修改.-------h5并不是一门新的语言,而是html语言的第五次修订. 2.h ...