php --魔术常量 /魔术方法

魔术常量:

1. __LINE__

返回文件中的当前行号。

2. __FILE__

返回所在文件的完整路径。包含文件名

3. __FUNCTION__

返回所在函数名称。

4. __CLASS__

返回所在类的名称。

5. __METHOD__

返回所在类方法的名称。需要注意__METHOD__返回的是"class::function"的形式,而__FUNCTION__则返回"function"的形式。

6.__DIR__

返回文件所在的目录。如果用在被包括文件中,则返回被包括的文件所在的目录。它等价于 dirname(__FILE__)。除非是根目录,否则目录中名不包括末尾的斜杠。不包含文件名。(PHP 5.3.0中新增) = 

7.__NAMESPACE__

当前命名空间的名称(区分大小写)。此常量是在编译时定义的(PHP 5.3.0 新增)。

8.__TRAIT__

Trait 的名字(PHP 5.4.0 新加)。自 PHP 5.4 起此常量返回 trait 被定义时的名字(区分大小写)。Trait 名包括其被声明的作用区域(例如 Foo\Bar

 

 

魔术方法:
PHP把类中所有以__(两个下划线)开头的方法当成魔术方法,一般建议用户不要将自定义的方法前面加上__作为前缀。魔术方法:

1. __construct()

类的默认构造方法,如果__construct()和与类同名的方法共同出现时,默认调用__construct()而不是同类名方法。一般情况下用户自定义构造方法也会使用__construct()。

2. __destruct()

类的析构函数,当该对象的所有引用都被删除,或者对象被显式销毁时执行。

3. __get($name)

可以简单归纳为:用$object->a的方式读取对象的属性时,如果属性a存在且是public型,那么直接返回该属性的值;如果属性a不存在或者是protected/private这样的不可直接访问的类型,就会调用__get($name)方法并以返回值为准。一般可以使用该方法使外部可限制性地访问内部属性,或者完成类似java中的反射操作。

4. __set($name, $value)

与__get($name)类似,用$object->a = 17的方式给属性赋值时,如果属性a存在且是public型,那么直接给属性a赋值皆可;如果属性a不存在或者是protected/private型,就会调用__set($name, $value)方法。

5. __call($name, $arguments) / __callStatic($name, $arguments)

当调用不存在或者不可访问的方法时,会调用__call($name, $arguments)方法。而当在静态方法中调用不存在或者不可访问的方法时,会调用__callStatic($name, $arguments)方法。

6. __toString()

当打印对象时会被直接调用。如echo $object;

7. __clone()

当对象被拷贝时直接调用。如$a = new Action(); $a = $object;

8. __isset($name) / __unset($name)

对不存在或者不可访问的属性使用isset()或者empty()时,__isset()会被调用;当unset一个不存在或者不可访问的属性时,__unset()会被调用,否则直接unset该属性皆可。

9. __set_state()

用var_export()输出一个对象时,__set_state()会被调用,输出内容以该魔术方法的返回值为准。注:var_export()和var_dump()类似,只是var_export()输出的内容符合php语法。注意使用方法:

 

$test = new Test();
$b = var_export($test, true);
var_dump($b);

 

class Test {

 

    public $a;
    public static function __set_state($array) {
        $ab = new Test();
        $ab->a = 10;
        return $ab;
    }
}


10. __autoload($name)

实例化一个对象时,如果对应的类不存在,则该方法被调用。注意:该方法是全局函数,参数是类的名称。

11. __sleep() / __wakup()

转载于:https://www.cnblogs.com/hmetoer2017/p/6292865.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/255568.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【pyradiomics学习】——影像组学特征

目录 1、形状特征(14个) 2、一阶特征(18个) 灰度共生矩阵特征(24个) 灰度区域大小矩阵特征(16个) 灰度行程矩阵特征(16个) 邻域灰度差矩阵特…

NLP系列学习:前向算法和后向算法

在上一篇文章里,我们简单的概述了隐马尔科夫模型的简单定义在<CRF-tutorial>这一篇文章里,我们可以看到HMM经过发展之后是CRF产生的条件,因此我们需要学好隐马尔科夫模型.在这一部分,我比较推荐阅读宗成庆老师的<自然语言处理>这本书,这一部分宗老师写的很不错,相关…

Java日期处理 开始时间-结束时间查询

//开始时间 timeBegin " 00:00:00"; //结束时间 timeEnd " 23:59:59"; //时间转换 SimpleDateFormat format new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //Java时间类型转换成Long类型(可封装成工具类) public static Long stringToLong(St…

angular路由操作中'#'字符的解决办法

var appangular.module("myapp",["ngRoute"]);app.controller("ctr",function($scope){});//angular1.6.0以上版本需要配置app.config(["$locationProvider",function($locationProvider){ $locationProvider.hashPrefix(""…

【TypeError: float() argument must be a string or a number, not ‘map’】

初始 相关系数过滤法调用函数 from sklearn.feature_selection import SelectKBest from scipy.stats import pearsonr SelectKBest(lambda X,Y:np.array(map(lambda x:pearsonr(x,Y),X.T)).T,k2) .fit_transform(X_test,y_test) TypeError: float() argument must be a strin…

CvScalar

CvScalar定义可存放1—4个数值的数值&#xff0c;其结构如下。 typedef struct CvScalar { doubleval[4]; } CvScalar; CvScalar pt&#xff1b; 如果使用的图像是1通道的&#xff0c;则pt.val[0]中存储数据 如果使用的图像是3通道的&#xff0c;则pt.val[0]&#xff0c;pt…

UVA1493 - Draw a Mess(并查集)

UVA1493 - Draw a Mess(并查集) 题目链接 题目大意:一个N * M 的矩阵&#xff0c;每次你在上面将某个范围上色&#xff0c;不论上面有什么颜色都会被最新的颜色覆盖&#xff0c;颜色是1-9&#xff0c;初始的颜色是0.最后输出这个矩形中。每一个颜色有多少个。某个范围这个分为了…

Hyper-v Server 2012 Release Candidate 部署体验

很多人知道&#xff0c;Microsoft Hyper-V分为两种类型&#xff1a;一种是作为Windows Server的一个组件&#xff0c;另一种是作为虚拟化产品的单独服务器。虽然两者都是技术上的Hyper-V&#xff0c;每个版本的特性和用例各不相同。 Hyper-V Server直接在物理机器硬件上运行&am…

Unity 读取资源(图片)

方法一&#xff1a; 采用Resource.Load方法读取&#xff0c;读取在Unity中Assets下Resources目录下的资源名&#xff08;不采用后缀&#xff09;。 //图片放在Asset/Resources/ Texture2D tex (Texture2D)Resources.Load("图片名称"); 方法二&#xff1a; 采用WWW类…

【Python3 SelectKBest 调用personer出现的错误】

初始 相关系数过滤法调用函数 from sklearn.feature_selection import SelectKBest from scipy.stats import pearsonr SelectKBest(lambda X,Y:np.array(map(lambda x:pearsonr(x,Y),X.T)).T,k2) .fit_transform(X_test,y_test) TypeError: float() argument must be a strin…

ABB机器人的错误处理

ABB机器人的错误处理 errnum 数据类型 errnum用于描述在执行过程中&#xff0c;发生的所有可恢复的错误。例如程序执行时&#xff0c;被零除。 如果机器人程序执行过程中检测到一个错误&#xff0c;错误非致命&#xff0c;可以被错误处理程序处理。 这类错误的典型例子是…

面向对象的七大原则

总脉络图&#xff1a; 一&#xff1a;单一职责原则(全称&#xff1a;“Single-Responsibility Principle”)又称 单一功能原则 核心&#xff1a;解耦和增强内聚性&#xff08;高内聚&#xff0c;低耦合&#xff09; 说明&#xff1a; 就一个类而言&#xff0c;应该只专注于做一…

福建工程学院寒假作业G题

涨姿势题就是所谓的优化题&#xff0c;在组队赛中&#xff0c;队伍发现了一题水题&#xff0c;那么应该交给谁去处理&#xff1f;作为处理水题的代码手&#xff0c;应该具备什么样的素养&#xff1f;1&#xff0c;要快&#xff0c;水题拼的就是速度&#xff01;2&#xff0c;不…

excel 多列匹配相等后 引用值

2019独角兽企业重金招聘Python工程师标准>>> 场景 如图下&#xff0c;当A、B列与E、F列皮配上&#xff0c;C列则引用G列的值 原理 VLOOKUP只能查找单列值。我们可以把多列值拼接后形成一个虚拟列&#xff0c;然后VLOOKUP函数查找这个虚拟列进行匹配。 在C1处输入下…

【BUG调试】——OSError: Caught OSError in DataLoader worker process 0

目录 问题描述&#xff1a; 参考链接 问题分析 解决方案 出现情况 问题描述&#xff1a; 在使用pytorch搭建了VGG从头开始训练时出现了以下问题&#xff1a; OSError: Caught OSError in DataLoader worker process 0 参考链接 参考up主视频&#xff1a;4.2 使用pytor…

cvAdd()和 cvAddS()函数的使用

函数原型如下&#xff1a; voidcvAdd( const CvArr* src1, const CvArr* src2, CvArr* dst, const CvArr* maskNULL ); src1 第一个原数组 src2 第二个原数组 dst 输出数组 mask 操作的复盖面, 8-bit单通道数组; 只有复盖面指定的输出数组被修改。 函数 cvAdd 加一个数…

设计模式之接口隔离原则

这个原则想必大家从字面就可以猜出大体的含义&#xff0c;其实这个原则可以说是依赖倒置原则的一种进化补充&#xff0c;因为依赖倒置原则告诉我们实现类的各种依赖关系应该尽量隔离在抽象里面&#xff0c;同时底层的接口协议不应该依赖上层协议的变更而变更&#xff0c;所以我…

iOS 图解多线程

转载于:https://www.cnblogs.com/OnNineMonkey/p/5385963.html

Egret之位图字体

1 , 关于位图字体的制作 2 , egret官方提供的资源 看看cartoon-font.fnt的内容 {"file":"cartoon-font.png","frames":{ "A":{"x":1,"y":54,"w":21,"h":24,"offX":2,"offY&qu…

【机器视觉】——平面测量实际尺寸(像素尺寸转物理尺寸)

目录 方法一:比例尺法 方法:二:三角法 方法三:相机标定 以下方法均在平面的前提下进行 方法一:比例尺法 在一张纸上绘制一个带刻度的直线,将纸张放在摄像头下,抓取任意两点的像素坐标,计算像素距离pd,再根据刻度读取实际距离ad,根据两者可以求出缩放比例,即地图上…