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 ...
随机推荐
- [Asp.net MVC]Asp.net MVC5系列——从控制器访问模型中的数据
目录 概述 从控制器访问模型中的数据 强类型模型与@model关键字 总结 系列文章 [Asp.net MVC]Asp.net MVC5系列——第一个项目 [Asp.net MVC]Asp.net M ...
- Extjs 学习笔记1
学习笔记 目 录 1 ExtJs 4 1.1 常见错误处理 4 1.1.1 多个js文件中有相同的控件,切换时无法正常显示 4 1.1.2 Store的使用方法 4 1.1.3 gridPanel ...
- leetcode 173. Binary Search Tree Iterator
Implement an iterator over a binary search tree (BST). Your iterator will be initialized with the ro ...
- 常用聚类算法(一) DBSCAN算法
1.DBSCAN简介 DBSCAN(Density-Based Spatial Clustering of Applications with Noise,具有噪声的基于密度的聚类方法)是一种基于密度 ...
- job_queue_processes参数讲解
http://blog.sina.com.cn/s/blog_62defbef0101opv0.html http://blog.163.com/donfang_jianping/blog/stati ...
- Java中如何解决double和float精度不准的问题
我们知道浮点数是无法在计算机中准确表示的,例如0.1在计算机中只是表示成了一个近似值,因此,对付点数的运算时结果具有不可预知性. 在进行数字运算时,如果有double或float类型的浮点数参与计算, ...
- PHP使用curl替代file_get_contents
初学php的朋友们,很容易翻一个错误,在写采集程序或者调用api接口总会有线考虑到使用file_get_contents函数来或许内容,程序的访问量不大倒是没什么影响,但是访问量提升了那非常的悲剧了, ...
- show_sync_logs
存入数据库的操作 CREATE TABLE `show_sync_logs` ( `id` ) NOT NULL AUTO_INCREMENT, `queue` ) DEFAULT NULL COMM ...
- 谷歌chrome浏览器和火狐firefox浏览器自带http抓包工具和请求模拟插件
谷歌chrome浏览器自带http抓包工具 chrome://net-internals/ 谷歌chrome浏览器http请求模拟插件:postman 火狐http请求模拟插件:httprequest ...
- 【leetcode】Word Ladder
Word Ladder Total Accepted: 24823 Total Submissions: 135014My Submissions Given two words (start and ...