原文:
问:内容是一样,不知道前面那两个特殊的下划线有什么意义,是同一个类中的两个方法?

function __toString()
{return $this->content;}//输出字符串function toString()
{return $this->content;
}

回答:
执行的结果相同. 区别在于,
  前一个是魔术函数, 在需要字符串值的地方会自动调用它进行对象的类型转换.
  后一个需要在代码中明确调用才有机会执行.
实例
class MyClass
{public function __toString(){return 'call __toString()';}public function toString(){return 'call toString()';}
}$my = new MyClass();
echo $my . '<br />'; //自动调用(隐式)__toString转成string
echo $my->toString() . '<br />'; //调用(显式)toString去转成string
echo $my->__toString() . '<br />'; //如果这样调用, 代码会不好看
echo (string)$my . '<br />';

  __toString()会在需要转成字符串时, 会隐式自动调用它, 在PHP内部.  这个也是来自JAVA的. 建议在__toString()中调用toString(), 这样就不会代码重复了.
 

转自:

  单党育的BLOG.PHP -toString()辨析.http://blog.sina.com.cn/s/blog_569767bf01000c37.html

php __tostring 与 tostring相关推荐

  1. lua元表和元方法 《lua程序设计》 13章 读书笔记

    lua中每个值都有一个元表,talble和userdata可以有各自独立的元表,而其它类型的值则共享其类型所属的单一元表.lua在创建table时不会创建元表. t = {} print(getmet ...

  2. php反序列化java_PHP反序列化漏洞简介及相关技巧小结

    *严正声明:本文仅限于技术讨论与分享,严禁用于非法途径 要学习PHP反序列漏洞,先了解下PHP序列化和反序列化是什么东西. php程序为了保存和转储对象,提供了序列化的方法,php序列化是为了在程序运 ...

  3. 【转贴】Lua 5.0 参考手册

    作者: Roberto Ierusalimschy, Luiz Henrique de Figueiredo, Waldemar Celes Copyright © 2003 Tecgraf, PUC ...

  4. PHP反序列化漏洞总结

    一. 基础知识 1.什么是反序列化漏洞: 程序未对用户输入的序列化字符串进行检测,导致攻击者可以控制反序列化过程,通过在参数中注入一些代码,从而达到代码执行,SQL 注入,目录遍历等不可控后果,危害较 ...

  5. lua的元表metatable及元方法

    前言 元表对应的英文是metatable,元方法是metamethod.我们都知道,在C++中,两个类是无法直接相加的,但是,如果你重载了"+"符号,就可以进行类的加法运算.在Lu ...

  6. php反序列化总结与学习

    基础知识: 1.php类与对象 2.魔术函数 3.序列化方法 类与对象 <?php class test{public $var = "hello world";public ...

  7. php反序列化漏洞实验,PHP反序列化漏洞简介及相关技巧小结

    原标题:PHP反序列化漏洞简介及相关技巧小结 *严正声明:本文仅限于技术讨论与分享,严禁用于非法途径 要学习PHP反序列漏洞,先了解下PHP序列化和反序列化是什么东西. php程序为了保存和转储对象, ...

  8. 《Programming in Lua 3》读书笔记(十)

    这一部分应该挺重要的,Lua中唯一的数据结构便是table,几乎所有的的数据操作都是在table的基础上进行.而本文提到的元表和元方法,便是帮助table实现更强大的功能而设计的. 日期:2014.7 ...

  9. Lua程序设计 | 模块和包、泛型迭代器和for、元表和元方法

    From<Programming in Lua> by Roberto Ierusalimschy 文章目录 模块和包 函数 require 模块重命名 搜索路径 搜索器 Lua语言中编写 ...

最新文章

  1. R语言可视化R原生plot函数与ggplot可视化结果组合、整合输出实战:原生R绘图plot函数可视化、ggplot2包可视化、R原生plot函数与ggplot可视化结果组合
  2. 把巧克力球送上天,玛氏用Uni Marketing 打造网红零食
  3. NYOJ 240 小明的调查统计(二)
  4. 快速弄懂内存字节对齐
  5. 了解React Native中的不同JavaScript环境
  6. linux桌面图标大小,ubuntu17.10修改桌面图标大小的方法
  7. 2014完美世界校招笔试题及答案
  8. 阿里云智能编码插件Cosy,提升开发效率杠杠滴!
  9. 【EF】对象名 'dbo.EdmMetadata' 无效。
  10. 能够修改证件照的软件有哪些?分享两种好用的修改工具
  11. OpenGL 纹理基础与索引
  12. kettle优化之提高MySQL读写速度
  13. HDU 4408 Minimum Spanning Tree 最小生成树计数
  14. java fock join 列子
  15. 谷歌变坏了?Chrome 已成众矢之的
  16. ubuntu 16.04 LTS 安装搜狗拼音输入法步骤详解
  17. 解决黑群晖故障-抱歉,您所指定的页面不存在
  18. 聚华祥科技:数据分析对于店铺运营的意义
  19. 【b站黑马程序员C++视频学习笔记-多态案例三-电脑组装】
  20. 记住这五种人,值得你一辈子深交

热门文章

  1. VTK:Math之HomogeneousLeastSquares
  2. OpenCV使用基本算法检测颜色检查器
  3. OpenGL camera相机的实例
  4. OpenGL多光源Multiple lights
  5. C++bucket sort桶排序的实现算法(附完整源码)
  6. QT的QMutableListIterator类的使用
  7. C语言Fibonacci 数列
  8. C++访问权限与继承
  9. python求两数最大公因数_『用python求俩个数的最大公约数和最小公倍数』
  10. c++ 智能指针_详解 C++ 11 中的智能指针