php面向对象之__toString()

来自星星:http://w3note.com/web/109.html

似曾相识,在php面向对象编程之魔术方法__set,曾经介绍了什么是魔术方法,这一章又介绍一个魔术方法__tostring()

__toString()是快速获取对象的字符串信息的便捷方式,似乎魔术方法都有一个“自动“的特性,如自动获取,自动打印等,__toString()也不例外,它是在直接输出对象引用时自动调用的方法。

__toString()的作用

当我们调试程序时,需要知道是否得出正确的数据。比如打印一个对象时,看看这个对象都有哪些属性,其值是什么,如果类定义了toString方法,就能在测试时,echo打印对象体,对象就会自动调用它所属类定义的toString方法,格式化输出这个对象所包含的数据。

下面我们来看一个__toString()的实例

<?php
02
class Person{
03
    private $name = "";
04
    function __construct($name = ""){
05

06
        $this->name = $name;
07
    }
08
    function say(){
09

10
        echo "Hello,".$this->name."!<br/>";
11
    }
12
    function __tostring(){//在类中定义一个__toString方法
13
        return  "Hello,".$this->name."!<br/>";
14
    }
15
}
16
$WBlog = new Person(‘WBlog‘);
17
echo $WBlog;//直接输出对象引用则自动调用了对象中的__toString()方法
18
$WBlog->say();//试比较一下和上面的自动调用有什么不同
19
?>

  

程序输出:

Hello,WBlog!

Hello,WBlog!

如果不定义“__tostring()”方法会怎么样呢?例如在上面代码的基础上,把“ __tostring()”方法屏蔽掉,再看一下程序输出结果:

Catchable fatal error: Object of class Person could not be converted to string

由此可知如果在类中没有定义“__tostring()”方法,则直接输出以象的引用时就会产生误法错误,另外__tostring()方法体中需要有一个返回值。

时间: 2024-10-08 03:34:35

php面向对象之__toString()的相关文章

PHP面向对象(OOP):__toString()方法

我们前面说过在类里面声明“__”开始的方法名的方法(PHP给我们提供的),都是在某一时刻不同情况下自动调用执行的方 法,“__toString()”方法也是一样自动被调用的,是在直接输出对象引用时自动调用的, 前面我们讲过对象引用是一个指针,比如 说:“$p=new Person()“中,$p就是一个引用,我们不能使用echo 直接输出$p,这样会输 出 “Catchable fatal error: Object of class Person could not be converted t

php面向对象补充

面向对象补充 __tostring的方法 class Ren{ public $name; public function __tostring(){ return "这是人类,有成员变量name代表名称"; } } $r = new Ren(); echo $r; 自动调用tostring方法. 克隆对象的方法 class Ren{    public $name;        public function __tostring(){        return "这是

php克隆 自动加载

自动加载类库文件 当类多了以后,比如要在一个文件中载入3个类库文件:a.class.php,b.class.php,c.class.php要用三个 require_once(‘classes/a.class.php); require_once(‘classes/b.class.php); require_once(‘classes/c.class.php); 可以用PHP5自动加载的功能来处理:在全局应用配置文件中,定义一个特殊的函数__autoload($class)函数(__autoloa

面向对象__tostring()方法、克隆及加载

一.__tostring()方法 写在类里,必须有返回值 class Ren { public $name; public function __ tostring() { return "该类是人类,name代表姓名"; } } $r = new Ren(); echo $r; 二.__clone()方法 class Ren { public $name="张三"; //第二种修改成员变量值的方法 public function __clone() { $this

【PHP面向对象(OOP)编程入门教程】16.__toString()方法

我们前面说过在类里面声明“__”开始的方法名的方法(PHP给我们提供的),都是在某一时刻不同情况下自动调用执行的方 法,“__toString()”方法也是一样自动被调用的,是在直接输出对象引用时自动调用的, 前面我们讲过对象引用是一个指针,比如 说:“$p=new Person()“中,$p就是一个引用,我们不能使用echo 直接输出$p,这样会输 出“Catchable fatal error: Object of class Person could not be converted to

PHP系列(四)PHP面向对象程序设计

php面向对象程序设计 面向对象的优势:可读性.可重用性.稳定性.维护性.可测试性 简单格式: [修饰符]class 类名{ [成员属性] [成员方法] } 完整格式: [修饰符]class 类名 [extends 父类]  [implements 接口 ] { [成员属性] [成员方法] } 成员方法格式: [修饰符] function 方法名(参数){ [方法体] [return返回值] } 修饰符:public  protected  private static  abstract  f

面向对象工具

面向对象的工具 一.魔术方法 (1).__autoload() : 自动加载类文件,只要实例化就加载类. (2)__call($_methodName,$args): php内置自动屏蔽错误消息的方法 (3)__toString() : php 内置打印对象的引用,注意用public 修饰,用return 返回内容: (4)__clone() : php 内置的方法来调整克隆对象的行为.A = new B(); C = clone A; (5)检测类和对象的函数 1.  class_exists

第一章 面向对象思想的核心概念

1. 面向对象核心思想 将对象作为程序的基本单元,将程序和数据封装其中,以提高软件的重用性,灵活性和可扩展性. 面向对象的核心思想是 对象,封装,可重用性和可扩展性. 2. 魔术方法的应用 __set() 设置外部无法访问的属性 __get() 获取外部无法访问的属性 __call() 调用不存在的方法时候会调用此方法 __callStatic() 调用不存在的静态方法时候会调用此方法 __toString() 打印对象属性 3.继承,组合与多态 类的组合:在一个类方法中实例化其他类作为自己的属

前端学PHP之面向对象系列第二篇——魔术方法

显示目录 目录 [1]构造方法 [2]析构方法 [3]不可访问属性[4]对象复制[5]字符串[6]对象不存在[7]自动加载类[8]串行化[9]函数调用 前面的话 php在面向对象部分有很多相关的魔术方法,这些方法为面向对象实现提供了便利,本文将详细介绍魔术方法 构造方法 大多数类都有一种称为构造函数的特殊方法.当创建一个对象时,它将自动调用构造函数,通常用它执行一些有用的初始化任务 构造函数的声明与其它操作的声明一样,只是其名称必须是两个下划线__construct( ).这是PHP5中的变化: