PHP中的常用魔术方法
克隆方法
当对象被格隆时,将会自动调用
"有人克隆我!假冒";
//当对象被格隆时,将会自动调用
//克隆$lisi对象
//输出
有人格隆我!假冒
$money='30两';
$name='lisi';
__get($p){
"你想访问我的",$p,'属性';
//输出 lisi
//输出
你想访问我的age属性
//输出
你想访问我的friend属性
当调用未定义的属性时,也会自动调用__get方法
你调用时的属性名
//调用了不存在的属性并赋值
这两个居然加到了对象里
$money="30两";
__set($a,$b){
echo '你想设置我的',$a,'属性';
echo '且值是',$b;
//输出 你想设置我的aaa属性
且值是111
//输出
你想设置我的money属性 且值是40两
//输出
你想设置我的age属性 且值是28
$name属性的值改了
属性 属性值
$bone="猪腿骨";
__isset($p){
'你想判断我的',$p,'属性存不存在';
return 1;
//这里return
1 会影响 isset的判断为真了
'你想去掉我的',$p;
//isset是语法结构判断变量是否存在
//输出
4
触发了 __isset魔术方法
输出
你想判断我的tail属性存不存在
//输出 有tail属性
就是因为
__isset里面return 了 真 才会导致判断失误
"没有tail属性";
isset判断对象不可见的属性时(protected/private/不存在的属性)
会触发 __unset魔术方法 输出
你想去掉我的tail
__unset魔术方法
__unsert('tail');
hello(){
'hello';
t(){
echo "你";
__call($metch,$argu){
echo '你想调用一个我不存在或无权操作的方法',$metch,'
';
echo '你调用时还传了参数';
print_r($argu);
//调用未定义的方法会触发 __call魔术方法
//输出
你想调用一个我不存在或无权操作的方法say
你调用时还传了参数
Array ()
//调用私有的方法 也会触发 __call 魔术方法
//输出
你想调用一个我不存在或无权操作的方法t 你调用时还传了参数
Array ([0]=>1 [1]=>2 [2]=>3)
__call('t',array(1,2,3));
你调用方法时没带参数就是一个空数组
带了参数就是参数组成的数组
static protected function qq(){
__callStatic($a,$b){
"你想调用一个不存在或无权调用的静态方法",$a,"
";
';
你想调用一个不存在或无权调用的静态方法say
//你想调用时还传了参数
Array ( [0] => 痛苦 [1] => 悲哀 [2] => 爱
)
//输出
你想调用一个不存在或无权调用的静态方法qq
// 你想调用时还传了参数 Array (
)
声明__callStatic 注意要带 static
__callStatic 魔术方法
__callStatic(‘say’,array(1,2,3));
你调用方法时没带参数就是一个空数组
带了参数就是参数组成的数组
PHP中的常用魔术方法的更多相关文章
- php中的常用魔术方法总结
以下是对php中的常用魔术方法进行了详细的总结介绍,需要的朋友可以过来参考下 常用的魔术方法有:__Tostring () __Call() __autoLoad() __ clone() __GET ...
- Python中的常用魔术方法介绍
1.__init__ 初始化魔术方法 触发时机:初始化对象时触发(不是实例化触发,但是和实例化在一个操作中) 参数:至少有一个self,接收对象 返回值:无 作用:初始化对象的成员 注意:使用该方式初 ...
- php中常用魔术方法的举例
魔术方法是php面向对象特有的功能,并且有时候能实现意想不到的效果,包括前面提到的构造函数.析构函数.还有__clone函数,另外再简单的介绍几个: 1.__toSring和__invoke clas ...
- PHP 中 16 个魔术方法详解
PHP 中 16 个魔术方法详解 前言 PHP中把以两个下划线__开头的方法称为魔术方法(Magic methods),这些方法在PHP中充当了举足轻重的作用. 魔术方法包括: __constru ...
- python常用魔术方法概览
构造和初始化 __init__(self, args) 构造函数 __new__(cls) 传入的是类实例 __del__(self) 析构函数,调用 del cls 时会被调用 属性访问控制 __g ...
- c#中的常用ToString()方法总结
c#中的常用ToString()方法总结 对于int,double等的tostring: C 货币 2.5.ToString("C") ¥2.50 D 十进制数 25.ToStri ...
- 问题:C# ToString("P");结果:c#中的常用ToString()方法总结
c#中的常用ToString()方法总结 很多类都重写了ToString方法, 导致很多类的tostring到底执行了什么,有哪些参数,都不清楚 对于int,double等的tostring: C ...
- [Python3 填坑] 014 类的常用魔术方法举例
目录 1. print( 坑的信息 ) 2. 开始填坑 2.1 __init__() 2.2 __new__() 2.3 __call__() 2.4 __str__() 2.5 __repr__() ...
- Python 基础之面向对象之常用魔术方法
一.__init__魔术属性 触发时机:实例化对象,初始化的时候触发功能:为对象添加成员,用来做初始化的参数:参数不固定,至少一个self参数返回值:无 1.基本用法 #例:class MyClass ...
随机推荐
- 剑指Offer 反转链表
题目描述 输入一个链表,反转链表后,输出链表的所有元素. 思路: 法1:用栈,压栈出栈 法2:头插法(有递归非递归2中) AC代码: /* struct ListNode { int va ...
- 百度网盘爬虫Python
": for i in range((shares["total_count"]-1)/ONESHAREPAGE): try: dbcurr.execute('INSER ...
- [转]Python的ASCII, GB2312, Unicode , UTF-8
2007-12-13 10:50:47| 分类: Python实用软件编|举报|字号 订阅 ASCII 是一种字符集,包括大小写的英文字母.数字.控制字符等,它用一个字节表示,范围是 0-1 ...
- idea java 正则表达式匹配替换
原文匹配中文 excelMap.get\((\"[\u4E00-\u9F15]+\")\) 目标 excelMap.get\($1.hashCode\(\)\)
- JavaScript Coding 模式荟萃
1.自运行的匿名函数 <script type="text/javascript" src="./js/jquery-1.7.2.js"></ ...
- ubuntu添加sudo权限
ubuntu有时候没有开通sudo功能,有些操作只能切换到root进行,很不方便. 1.切换到root su root 2.打开suduers文件 gedit /etc/sudoers 3.找到下面这 ...
- C#之this的使用
msdn地址: https://msdn.microsoft.com/zh-cn/library/bb383977(v=vs.120).aspx 扩展方法使你能够向现有类型“添加”方法,而无需创建新的 ...
- strcpy vs memcpy
[本文连接] http://www.cnblogs.com/hellogiser/p/strcpy_vs_memcpy.html [分析] strcpy和memcpy都是标准C库函数,它们有下面的特点 ...
- RecyclerView notifyDataSetChanged不起作用
一般listview设置完data后调用notifyDataSetChanged便可刷新布局界面,然而recycleview调用这个方法却没有任何反应.对于很多不熟悉recycleview的话很容易躺 ...
- hnu10104
AC自动机+DFS #include <cstdio> #include <queue> #include <cstring> using namespace st ...