魔术方法 __tostring __debugInfo __call

__tostring 触发时机:echo 一个对象的时候触发

该函数需要return一个字符串

__debugInfo 触发时机:var_dump 一个对象的时候触发

该函数需要return 一个数组

__call    触发时机:当调用一个不存在对象方法的时候触发

参数一:函数名

参数二:是一个数组,函数中的参数都被存放到这个数组中

<?php

    class Person{       public $name;       public $age;       public $height;

       public function __tostring()       {           return ‘我散步回来了!‘;       }      public function __debugInfo()       {           return [‘age‘,‘height‘];       }

       public function test(){           echo ‘这是test方法‘;       }

       public function __call($name,$value)       {           var_dump($name,$value);       }

    }

    $niu = new Person();    //echo $niu;    //var_dump($niu);    $niu->demo(1,2,3);

原文地址:https://www.cnblogs.com/rjbc/p/11391895.html

时间: 2024-10-03 04:25:07

魔术方法 __tostring __debugInfo __call的相关文章

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 wit

魔术方法__clone(), __toString(), __call(), __autoload(), __sleep()和__wakeup()详解

一.魔术方法__clone() <?php class demo{ public $name; public $age; public function __construct($name,$age){ $this -> name = $name; $this -> age = $age; } public function say(){ echo "say".$this->name; } //在克隆对象时自动调用 //作用:可以对新对象的成员属性进行赋值 pu

PHP面向对象魔术方法之__call函数

l 基本介绍: (1) 当我们调了一个不可以访问的成员方法时,__call魔术方法就会被调用. (2) 不可以访问的成员方法的是指(1. 该成员方法不存在, 2. 成员方法是protected或者 private) l 需求 我们就是希望,在类的外部直接调用不可访问的成员方法(private , protected). l 案例说明 <?php header('content-type:text/html;charset=utf-8'); //__call魔术方法 class Monk{ pub

多态、抽象类、魔术方法

多态 接口的方法实现可以有很多.多以对于接口里面定义的方法的具体实现是多种多样的,这种特性我们称为多态 接口A两个实现B和C,B和C对A里面定义的方式实现可以是不同的,这种现象就是多态 相同的一行代码对于传入不同的接口的实现的对象的时候,表现是不同的.这就是多态 抽象类 abstract 关键字用于定义抽象类 抽象类里面 1.可以定义方法体 2.可以定义普通方法,有方法的具体实现 继承抽象类的子类需要实现抽象类中定义的抽象方法 魔术方法 __toString() 当对象被当做string使用的时

PHP面向对象常见的关键字和魔术方法

在PHP5的面向对象程序设计中提供了一些常见的关键字,用来修饰类.成员属性或成员方法,使他们具有特定的功能,例如final.static.const等关键字.还有一些比较实用的魔术方法,用来提高类或对象的应用能力,例如__call().__toString().__autoload等. ①final关键字的应用 final关键字的作用如下:a.实用final标识的类,不能被继承.b.在类中使用final标识的成员方法,在子类中不能被覆盖. 在下面的例子中声明一个MyClass类,并使用final

PHP中的常见魔术方法功能作用及用法实例

概述 在面向对象编程中,PHP提供了一系列的魔术方法,这些魔术方法为编程提供了很多便利.PHP中的魔术方法通常以__(两个下划线)开始,并且不需要显示的调用而是由某种特定的条件出发.这篇文章简单总结了PHP中提供的魔术方法. 开始之前 在总结PHP的魔术方法之前先来定义两个类,以便后边示例使用: 复制代码代码如下: <?phpclass Device {    public $name;               public $battery;            public $data

PHP中的魔术方法:__construct, __destruct , __call, __callStatic,__get, __set, __isset, __unset , __sleep, __wakeup, __toString, __set_state, __clone and __autoload

1.__get.__set 这两个方法是为在类和他们的父类中没有声明的属性而设计的: __get( $property ) 当调用一个未定义的属性时访问此方法: __set( $property, $value ) 给一个未定义的属性赋值时调用: 这里的没有声明包括当使用对象调用时,访问控制为proteced,private的属性(即没有权限访问的属性). 2.__isset.__unset __isset( $property ) 当在一个未定义的属性上调用isset()函数时调用此方法: _

PHP中的魔术方法:__construct, __destruct , __call,__get, __set, __isset, __unset , __toString, __set,__clone and __autoload

1.__get.__set 这两个方法是为在类和他们的父类中没有声明的属性而设计的: __get( $property ) 当调用一个未定义的属性时访问此方法: __set( $property, $value ) 给一个未定义的属性赋值时调用: 这里的没有声明包括当使用对象调用时,访问控制为proteced,private的属性(即没有权限访问的属性). 2.__isset.__unset __isset( $property ) 当在一个未定义的属性上调用isset()函数时调用此方法: _

phpz中的魔术方法__call、__set、__get、__sleep、__invoke、__autoload、__construct、__destruct、__clone、__tostring、__callstatic

PHP5.3新增了一个叫做__invoke的魔术方法,这样在创建实例后,可以直接调用对象. class testClass { public function __invoke { print “hello world”; } } $n = new testClass; $n(); 执行结果为: hello world. 官方示例 class CallableClass { public function __invoke($x) { var_dump($x); } } $obj = new C