php有多少魔术方法,PHP常用的几个魔术方法
常用的魔术方法有:__Tostring () __Call() __autoLoad() __ clone() __GET() __SET() __isset() __unset()
1.__Tostring()用于定义输出对象引用时调用常用于打印一些对象的信息必须有返回值eg:有一个persion类
Persion per =new persion()
Echo per; //直接调用会出错
我们可以在类的定义中添加__tostring()方法
Function __Tostring()
{
$str=this->$name.this->age;
Return $str;
}
2.__clone()对象的复制
引用赋值
$per1=$per2;而这在内存中只有一块地址
而$per1=clone $per2这时有两块内存地址
3.__call()方法当调用类实例中不存在的函数时自动执行
如果试图调用类中不存在的函数,会出现语法错误,为了能够友好的提示
我们可以在类中声明Call()方法;Function __call($funName,$argu)
{
Echo "名为".$funName."参数为".printf($argh)."的函数不存在",
}
4.__autoLoad自动加载使用的类文件 该函数是在引用的页面添加
我们都使用过这样情况,在页面中需要调用其他php文件,我们需要使用include方法
但是如果有几十个页面需要引用,未免太过繁琐,我们可以在该页面中使用autoload方法Function __autoload($className)
{
Include $className.".php";
}
这样凡是引用到其他类的地方,都会自动引用该类文件 前提类文件的名称必须是 类名.php
5.__GET()访问类中私有属性
如果类中的属性设置为私有属性,在类的实例中是无法访问的,但怎样才能访问呢?
我们就可以使用__GET()
Eg:
类中有Class person
{
Private $name;
Private $age;
}
实例化person per=new person()
Per->$name; //这样是取不到值的
但是如果我们在类中增加__GET方法Function __GET($proName)
{
Return this->$proName;
}
我们再次调用Per->$name就可以访问了
这样做有人会提出疑问了,这样可以直接访问私有变量,和声明成公有的有什么区别呢?
如果声明成公有的,我们可以任意读取,如果是私有,如果我们增加了get方法,那么每次调用私有属性都会调用GET方法的内容,这样我们就可以在get方法中增加一些逻辑处理。
6.__SET()设置类中的私有属性
原理同上,我们可以再类中添加__SET()函数,每当通过调用类实例给私有属性赋值,都会执行__SET函数,函数原型:Function __SET($proName,$value)
{
This->$proName=$value;
}
既然是方法赋值,我们就可以做一些逻辑处理
7.__isset()判断类中私有属性或方法是否存在时自动调用
首先我们先介绍一下isset方法,该方法用于判定属性和方法是否存在,但是我们无法通过类类实例判断类中的某个私有属性是否存在
如果我们使用isset(per->$name);//返回值是false,但是$name属性的确存在,怎么解决呢?
解决方法:
1.将$name定义为私有属性
2.
在类定义中添加Function __isset($proName)
{
Return isset(this->$proName);//再类内部是可以访问私有属性的
}
这样的话我们再次调用isset($name);返回值就为true了;
8.__unset()清除类中私有变量时自动调用
与之结合的是unset()unset方法可以删除属性,当我们需要删除类中属性的时候,如果是公有属性我们可以直接
删除,但是如果是私有我们只通过该方法就无法实现了
怎样实现呢我们可以使用__unset()方法实现该功能我们需要在类中添加Function __unset($proName)
{
Unset(this->$proName);
}
现在我们再调用unset($name);就可以删除person类中的私有属性$name了
php有多少魔术方法,PHP常用的几个魔术方法相关推荐
- php数组遍历方法,php常用的遍历数组的方法有哪些
这篇文章主要介绍了PHP中遍历数组的三种常用方法,结合实例形式分析了php针对数组使用for.foreach.list().each()和while联合使用遍历数组相关操作技巧,需要的朋友可以参考下. ...
- JavaScript常用的字符串操作对象方法
文章目录 ==对象方法== ++搜索.索引 `indexOf() ` :搜索首个字符串出现的位置 `lastIndexOf() `:搜索最后出现的字符串位置 `includes() `:搜索判断字符串 ...
- Day20 python__new__、单态模式、析构方法、常用魔术方法、__str__、__repr__、__bool__ 、__len__...
1.魔术方法 __new__ ''' 触发时机:实例化类生成对象的时候触发(触发时机在__init__之前) 功能:控制对象的创建过程 参数:至少一个cls接受当前的类,其他根据情况决定 返回值:通常 ...
- 列举php中常见的魔术方法,PHP 中常用的 9 个魔术方法
这个标题有点牵强因为php有不只9种魔术方法, 但是这些将会引导你使用php魔术方法一个好的开始.它可能魔幻,但是并不需要魔杖. 这些'魔术'方法拥有者特殊的名字,以两个下划线开始,表示这些方法在ph ...
- html脚本语言居中,web前端:CSS--几种常用的水平垂直居中对齐方法
层叠样式表(英文全称:CascadingStyleSheets)是一种用来表现html(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言.css不仅可以静态地修 ...
- 第60天:js常用访问CSS属性的方法
一. js 常用访问CSS 属性的方法 我们访问得到css 属性,比较常用的有两种: 1. 利用点语法 box.style.width box.style.top 点语法可以得到 ...
- php adodb使用,常用的php ADODB使用方法集锦
常用的php ADODB使用方法集锦 代码如下: //定义数据库变量 $DB_TYPE = "mysql"; $DB_HOST = "localhost& ...
- [转帖]ASP.NET中常用的优化性能的方法
ASP.NET中常用的优化性能的方法(转贴,Icyer收集整理) 1. 数据库访问性能优化 数据库的连接和关闭 访问数据库资源需要创建连接.打开连接和关闭连接几个操作.这些过程需要 ...
- Linux忘记密码常用的几种解决方法
Linux忘记密码常用的几种解决方法 参考文章: (1)Linux忘记密码常用的几种解决方法 (2)https://www.cnblogs.com/vurtne-lu/p/6550590.html 备 ...
最新文章
- Android Activity和Intent机制学习笔记
- centos7 系统备份
- mysql中 group_concat长度限制
- Linux安全学习总结
- centos6.8安装mysql打不开,Centos6.8安装Mysql5.7
- python创建项目包
- 脚本必须位于html的,js 前端第三剑客
- C/C++ 中判断某一文件或目录是否存在
- des和aes相比较有哪些特点_栓流气力输送相比较传统的高速气力输送方式而言,有哪些优势?...
- 浅谈 TypeScript【下】-- TypeScript 语言规范与基本应用
- kafka 幂等机制入门实例
- FireFox支持NPAPI接口,最新版本是52.9,53已经不支持了
- java高级面试题及答案
- 国际象棋渲染测试软件,C4D结合Octane Render渲染器制作三维国际象棋建模渲染教程 含中英文字幕...
- html 弹出框 自动关闭,js提示框,n秒后自动关闭
- 题目 1548: 盾神与砝码称重
- conda deactivate python3_无法访问conda环境中的activate、deactivate或conda
- “零代码”写爬虫下载自己全部的豆瓣影评
- PASCAL VOC2012 数据集讲解与制作自己的数据集
- Vue渲染器(一):渲染器的设计
热门文章
- 3dmax天光渲染设置_【扮家家云渲染效果图】3dmax测试全局照明效果|干货教程...
- checkbox ajax 不选中的值,php – 无法通过ajax传递checkbox的值
- linux运维之道基础命令,Linux运维之道(7)——Linux管理类命令
- java技术简介英文_Java技术常见的英文缩写
- oracle定义变量sql赋值_ORACLE获取SQL绑定变量值的方法总结
- Shell 中各种括号的作用
- JDK源码解析之 Java.lang.Compiler
- SQL语句性能优化操作
- 算法导论2nd 10.1-7
- 利用5w1h写出高效的git commit