php 所有魔术方法,PHP常用的魔术方法及规则
转:https://www.cnblogs.com/wanglijun/p/10926303.html
1. __construct 具有构造函数的类会在每次创建新对象时先调用此方法;初始化工作执行。
2. __desstruct 对象的所有引用都被删除或者当对象被显式销毁时执行。
3.__call()在对象中调用一个不可访问方法时,__call() 会被调用。
4.__callStatic()在静态上下文中调用一个不可访问方法时,__callStatic() 会被调用。
5.__set() 在给不可访问的属性赋值时调用
6.__get() 读取不可访问的属性值是自动调用
7.__isset() 当对不可访问的私有属性使用isset或empty时自动调用
8.__unset() 当对不可访问的私有属性使用unset时;自动调用
9.__toString()当一个类的实例对象;被当成一个字符串输出时调用
class a
{
private $name = 'james';
//设置私有属性
public function __set($a, $val)
{
echo "属性:'$a' 值: '$val' 在直接设置私有属性值的时候,自动调用了这个__set()方法为私有属性赋值
";
$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 . '
'; // 输出:james __toString()方法用于一个类被当成字符串时应怎样回应
//设置私有属性值的时候,调用_set()方法
$test->name = "中国人";//输出:属性:'name' 值: '中国人' 在直接设置私有属性值的时候,自动调用了这个__set()方法为私有属性赋值
//获取私有属性值的时候,调用_get()方法
echo $test->name.'
'; //输出:属性:'name' 在直接获取私有属性值的时候,自动调用了这个__get()方法 中国人
var_dump(isset($test->name)); //返回 true
var_dump(empty($test->name)); //返回 false
unset($test->name); //销毁时;自动调用__unset
var_dump($test->name); //报错;未定义 Undefined property: a::$name
标签:__,调用,name,私有,魔术,规则,test,PHP,属性
来源: https://www.cnblogs.com/whatstone/p/12059493.html
相关文章:

mysql启动后在哪里编程_启动mysql后怎么连接数据库
推荐答案一.mysql安装百度mysql下载一个即可。只是注意一下几个重要的数据:第一个就是Port Number :3306。端口号默认3306,一般不需要改,如果改了,请记住这个端口号。第二个就是password:本地数据库密码,默…

Python 出现 can't use a string pattern on a bytes-like object
# codingutf-8import urllib.requestimport reurl http://www.163.comfile d:/test.htmldata urllib.request.urlopen(url).read() r1 re.compile(<.*?>)c_t r1.findall(data)print(c_t)发现读取下来后,运行到第9 行,出现: cant use a string pattern on a bytes-l…

2018牛客网暑期ACM多校训练营(第十场)J(二分)
题目描述: 给你n个字符串,要让它们一个一个的合并成一个串。在合并的过程中,要保证被合并的串S是合并后的串r的前缀,模式串t是串r的子序。问你将这n个字符串合并后所得到的字典序最小的串是什么。 题目分析: 首先&…

实用c语言函数源码,C语言编写简单朗读小工具(有源码)
原标题:C语言编写简单朗读小工具(有源码)最近不少人在后台留言说学C都是面对枯燥的控制台程序,能不能体现一下C语言的实际用途,今天我们就理论结合实践一把:C语言结合VBS脚本编写一个简单的朗读小工具,做一个能够发音的…

php监听订单状态,ecshop数据库订单状态判断
order_info 表刚下完订单order_status 0shipping_status 0pay_status 0取消order_status 2shipping_status 0pay_status 0确认order_status 1shipping_status 0pay_status 0已付款order_status 1shipping_status 0pay_status 2配货中order_status 1shipping_status 3pay_status…

flask异步操作_Python Flask后端异步处理(三)
前一篇博文我们已经将基础知识和环境配置进行了介绍:首先编写一个celerytask.py文件进行Celery的配置,同时耗时任务也写在该文件中from celery import Celeryfrom init import appfrom SZheConsole import SZheScanapp.config[CELERY_BROKER_URL] redis…

Codeforces Round #308 (Div. 2) C. Vanya and Scales dfs
题目链接: http://codeforces.com/contest/552/problem/C 题意: 给你100个砝码,第i个砝码质量是w^i,然后问你能不能在有m的情况下,左边和右边都放砝码,使得这个天平平衡 题解: dfs直接暴力 对于这个砝码来说,只有3种选…

java中JVM的原理【转】
一、java虚拟机的生命周期: Java虚拟机的生命周期 一个运行中的Java虚拟机有着一个清晰的任务:执行Java程序。程序开始执行时他才运行,程序结束时他就停止。你在同一台机器上运行三个程序,就会有三个运行中的Java虚拟机。 Java虚拟…

switch的case使用数组C语言,使用常量数组的元素作为switch语句中的case
我正在尝试将一组按键映射到一组命令.因为我处理来自多个地方的命令,所以我想在键和命令之间设置一个抽象层,这样如果我更改底层键映射,我就不必更改很多代码.我目前的尝试看起来像这样:// input.henum LOGICAL_KEYS {DO_SOMETHING_KEY,DO_SOMETHING_ELSE_KEY,...countof_LOGIC…

PHP上传文件函数move_upload,如何使用php中move_uploaded_file函数
我们平时上传的文件保存在临时文件夹中,例如/ tmp,但临时文件夹的内容在一段时间后会被删除,因此为了将来要使用上传文件,需要将内容保存在不太可能被任意删除的专用目录中,这时就需要使用move_uploaded_file函数&…

java的标记接口_Java中的标记接口?
我被教授,Java中的Marker接口是一个空接口,用于向编译器或JVM发送信号,实现此接口的类的对象必须以特殊方式处理,如序列化,克隆等。但最近我了解到,它实际上与编译器或JVM无关。例如,在Serializ…

Java Exception
先贴上一段Exception源码注释 1 /**2 * The class {code Exception} and its subclasses are a form of3 * {code Throwable} that indicates conditions that a reasonable4 * application might want to catch.5 *6 * <p>The class {code Exception} and any subc…

c语言实验至少包括四个函数中,C语言实验报告《函数》
学号:__________ 姓名:__________ 班级:__________ 日期:__________指导教师:__________ 成绩:__________实验四 函数一、 实验目的1、掌握函数定义、调用和声明的方法2、掌握实参和形参之间的…

Android与iOS对比
最近有并行开发Android与iOS端App,想在这总结一些两种开发的相似与区别。转载于:https://www.cnblogs.com/stuwan/p/6475725.html

oracle停止一切进程,oracle启动/停止的几种方法以及 启动和停止过程中出错的解决办法...
一、启动几种方法:1、sqlplus /nologconnect /as sysdbastartup2、sqlplus /nologconnect /as sysdbastartup nomountalter database mountalter database open在以上两种方法中,1方法中的startup相当于2方法中的startup nomountalter database mountalt…

前端js判断上传是否为EXCEL表格问题
直接贴代码吧~JS部分 输入框部分: 转载于:https://www.cnblogs.com/aijiajia1314/p/9517541.html

java 外部类似_[求指点] 如何用java 实现类似linux中管道调用外部程序的功能
想写个小程序实现类似linux中管道的功能,创建一个外部子进程,然后主进程不断地写输入给子进程,而后把子进程的返回值取出。如下的小代码就是从stdin读入一个字符串,调用子进程(cat)返回这个串,然后返回。但下面的写法只…

c语言递归求五阶行列式源代码,久游堂怎么样 -官网
iOS版# -*- coding: utf-8 -*- """ author: Dell Created on Tue Dec 24 12:33:56 2019 """ import time from selenium import webdriver from selenium.webdriver.support.ui import WebDriverWait#等待一个元素加载完成 from selenium.webdri…

POJ - 3660 Cow Contest(flod)
题意:有N头牛,M个关系,每个关系A B表示编号为A的牛比编号为B的牛强,问若想将N头牛按能力排名,有多少头牛的名次是确定的。 分析: 1、a[u][v]1表示牛u比牛v强,flod扫一遍,可以将所有牛…

oracle scn与数据恢复,SCN与数据库恢复的关系
一。SCN与CHECKPOINTCKPT进程在checkpoint发生时,将当时的SCN号写入数据文件头和控制文件,同时通知DBWR进程将数据块写到数据文件。CKPT进程也会在控制文件中记录RBA(redo block address),以标志Recovery需要从日志中哪个地方开始。与checkpoint相关的SC…

Java 理解泛型的基本含义
Java 泛型 Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。 泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。 泛型方法 你可…

java严格区分大小写吗_Java是否区分大小写?
我在某处读到Java是区分大小写的。 我一直无法证实这一点。Java源代码是区分大小写的,如果你的意思是。 即Double与double不是同一个types,并且可以有两个不同的variablesmyData和mydata 。是吗? 如果是这样,为什么?区…

4、Hibernate查询语句
转载于:https://www.cnblogs.com/wyl9527/p/6484099.html

循环控制体重C语言,中年以后很容易发福变胖?4个建议帮你控制体重,保持轻盈体态...
随着年龄的增长,尤其是40岁以后,我们会发现,对待自己的体重与身材之时会显得很无力,在年轻的时候,减掉几斤的体重并不难,而到了中年以后则会变得很困难,即使减重成功,也非常容易反弹…

oracle异地迁移,数据泵实现Oracle数据迁移到异地库
今天发现impdp命令有个特殊的用途,可以将数据库的一个用户迁移到另一台机器上的数据库的用户中。如果目标用户不存在,还可以对应的创建该用户。下面就来看一下命令格式:Impdpusername/passwddbsnameremap_schemauserA:userB remap_tablespace…

轨迹系列1——一种基于路网图层的GPS轨迹优化方案
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.背景 GPS数据正常情况下有20M左右的偏移,在遇到高楼和桥梁等情况下偏移会更大。本方案讨论基于路网图层如何来进行轨迹优化。 2.数据预处理…

c语言如何输出整串链表,大神帮我看一下怎么输入输出一个链表,我输入了但是没输出啊...
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼#include #include #include //malloc头文件struct Student //定义结构体{int num;struct Student *next; //指向下一个数据节点的指针};int n;struct Student *creat() //定义建立链表的函数{n0;struct Student *p1,*p2,*head;p1p…

java基于http协议编程_Java中基于HTTP协议网络编程
java中为我们的网络支持提供了java.net包,能够使我们以编程的方式来访问Web服务功能,这篇博客,就跟大家分享一下,Java中的网络编程的知识,主要是学习下该java.net包下的API。URI——>URLURI:表示的是统一的资源标识…

json问题小结
json 键值对增加、删除 obj.keyvalue; // obj.keyobj[key]eval("obj."key); delete obj.key; vue中新增和删除属性 this.$set(object,key,value) this.$delete( object, key ) 触发视图更新 遍历键值 for (var key in data) {console.log(key:data[key]); //键:值 } …

windows 如何安装oracle 补丁包,Windows Server 2003 上安装 Oracle10g(10.2.0.1)并升级 至补丁(10.2.0.4) 图解...
Windows Server 2003 上安装 Oracle10g(10.2.0.1)并升级 至补丁(10.2.0.4) 图解第一部分:安装 Oracle 10.2.0.11、选择安装方法2、选择安装类型3、指定安装目录4、检查先决条件5、选择配置选项6、选择数据库配置7、指定数据库配置选项8、选择数据库管理选项9、指定数…