php类知识---魔术方法__toString,__call,__debugInfo
<?php class mycoach
{
public function __construct($name,$age)
{
$this->name = $name;
$this->age = $age;
echo "upon melancholy hill"."\n";
} public function __toString()
{
#echo时触发,返回一个字符串
return "working hard and party with cpc and cj"."\n";
} public function __debugInfo()
{
#一个诡异的方法,解析一个并不存在的函数,以及它其中的数组,返回一个数组
#该方法必须有两个参数
#var_dump()方法触发
return ['name'=>$this->name,'age'=>$this->age];
} public function __call($funcname,$myvals)
{
#触发时机,当对象调用一个并不存在的方法时
#第一个参数为函数名,第二个为函数的参数---以数组的形式组成
var_dump($funcname,$myvals);
} } $cpc = new mycoach('陈培昌',21);
echo $cpc;
$cpc->wenheiwa();
$cpc->saiwa(["0"=>["name"=>"cpc","age"=>22],"1"=>["name"=>"cj","age"=>20]]);
输出结果:
upon melancholy hill #实例化时调用了__construct()方法
working hard and party with cpc and cj #打印对象时调用了__toString方法
string(8) "wenheiwa" #对象调用了不存在的方法wenheiwa()执行了__call方法,由于函数没有参数,因此打印空
array(0) {
}
string(5) "saiwa" #对象调用了不存在的方法saiwa()执行了__call方法,由于函数有参数,因此打印参数----其形式为数组
array(1) {
[0]=>
array(2) {
[0]=>
array(2) {
["name"]=>
string(3) "cpc"
["age"]=>
int(22)
}
[1]=>
array(2) {
["name"]=>
string(2) "cj"
["age"]=>
int(20)
}
}
}
php类知识---魔术方法__toString,__call,__debugInfo的更多相关文章
- php魔术方法__tostring的应用
当echo一个对象的时候,会报错误 Object of class Person could not be converted to string 我们可以通过魔术方法__tostring() 把对 ...
- PHP面向对象魔术方法之__call函数
l 基本介绍: (1) 当我们调了一个不可以访问的成员方法时,__call魔术方法就会被调用. (2) 不可以访问的成员方法的是指(1. 该成员方法不存在, 2. 成员方法是protected或者 p ...
- Python 类的魔术方法
Python中类的魔术方法 在Python中以两个下划线开头的方法,__init__.__str__.__doc__.__new__等,被称为"魔术方法"(Magic method ...
- day19-Python运维开发基础(类的魔术方法)
1. __new__魔术方法 # ### __new__ 魔术方法 ''' 触发时机:实例化类生成对象的时候触发(触发时机在__init__之前) 功能:控制对象的创建过程 参数:至少一个cls接受当 ...
- php类的魔术方法也就是带下划线的类方法介绍及应用
001 PHP把所有以__(两个下划线)开头的类方法当成魔术方法,并且这些魔术方法的参数都不能通过引用传递.php的魔术方法有: 002 __construct(), __destruct(), _ ...
- php部分---面向对象静态、抽象类、oop接口、加载类、魔术方法、关键字。
静态 static关键字 普通成员普通成员是属于对象的 静态成员静态成员是属于类的 普通方法里面可以调用静态成员静态方法里面不能调用普通成员self关键字 在类里面代表该类 普通类class Ren ...
- 魔术方法以及__call的调用
一.什么是魔术方法? 魔术方法是php中对一类方法的统称,这些方法可以在任何类中被实现.他们通常可以完成一些特殊的无法纯粹依靠自己编程实现的功能.他们通常以双下划线"__"作为名称 ...
- PHP常用魔术方法(__call魔术方法:)
魔术方法 __call <?php //文件名:index.php define('a',__DIR__); include '/IMooc/Loader.php'; spl_autoload ...
- 魔术方法之__call与__callStatic方法
<?php class human{ private function t(){ } /** * 魔术方法__call * * @param string $method 获得方法名 * @pa ...
随机推荐
- 21.根据hive绑定数据统计计算保存到hive表中
创建upflow表 create external table mydb2.upflow (ip string,sum string) row format delimited fields term ...
- [转帖]postgres 创建新用户并授权-- 非常好的
postgres 创建新用户并授权 https://blog.csdn.net/XuHang666/article/details/81506297 原作者总结的挺好的 可以用来学习一下. grant ...
- linux:date 计算一组命令所花费的执行时间
date 命令可以用于计算一组命令所花费的执行时间 可以以不同的格式来读取.设置日期. (1) 读取日期: $ date Thu May 20 23:09:04 IST 2010 (2) 打印纪元时: ...
- Spring IOC的底层实现原理
PS:模块之间的相互依赖叫做耦合 传统方式的开发 UserService us=new UserService(); || v 面向接口编程 UserService us=new UserServi ...
- 跑跑卡丁车(dp)
题意:https://www.nitacm.com/problem_show.php?pid=1470 #define IOS ios_base::sync_with_stdio(0); cin.ti ...
- 老贾的幸福生活day5 while循环 格式化 运算符 编码初识
while 循环 死循环 while 条件: print(结果) while 条件: print(结果) else: print(结果) break 终止当前循环 continue 跳出当前循环,进行 ...
- vue.js中,如何把text按html格式化显示
先说方法:v-html = "你的字符串" <el-table-column type="expand" label="详情" hea ...
- 进阶Java编程(13)反射与Annotation
1,反射取得Annotation信息 从JDK1.5之后Java提供了Annotation技术支持,这种技术为项目的编写带来了新的模型,而后经过了十年的发展,Annotation的技术得到了非常广泛的 ...
- MVC4学习要点记一
强类型的辅助方法:这些helper的特征是名称后面加上了 For , 这些叫做强类型的辅助方法. 共用布局页:可以在Views文件夹下面新建一个视图页,命名为_ViewStart.cshtml,将这部 ...
- win DLL 笔记
DLL 头文件: #ifdef DLL_API #else #define DLL 导出类 class DLL_API point { public: void aaa() { } } 导出类中函数 ...