国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

php面向對象__toString() 用法詳解

2024-09-04 11:43:35
字體:
來源:轉載
供稿:網友

本文章來給各位同學介紹一下關于php面向對象__toString() 用法詳解,__toString() 方法是自動被調用的,是在直接輸出對象引用時自動調用的.

我們前面說過在類里面聲明“--”開始的方法名的方法(PHP給我們提供的),都是在某一時刻不同情況下自動調用執行的方法,“__toString()”方法也是一樣自動被調用的,是在直接輸出對象引用時自動調用的, 前面我們講過對象引用是一個指針,比如說:“$p=new Person()“中,$p就是一個引用,我們不能使用echo 直接輸出$p, 這樣會輸出”Catchable fatal error: Object of class Person could not be converted to string“這樣的錯誤,如果你在類里面定義了“__toString()”方法,在直接輸出對象引用的時候,就不會產生錯誤,而是自動調用了”__toString()”方法, 輸出“__toString()”方法中返回的字符,所以“__toString()”方法一定要有個返回值(return 語句).

實例代碼如下:

  1.     // Declare a simple class 
  2.     class TestClass 
  3.     { 
  4.         public $foo
  5.         public function __construct($foo) { 
  6.         $this->foo = $foo
  7.         } 
  8.        //定義一個__toString方法,返加一個成員屬性$foo 
  9.         public function __toString() { 
  10.         return $this->foo; 
  11.         } 
  12.     } 
  13.     $class = new TestClass('Hello'); 
  14.     //直接輸出對象 
  15.     echo $class
  16. ?> 

似曾相識,在php面向對象編程之魔術方法__set,曾經介紹了什么是魔術方法,這一章又介紹一個魔術方法__tostring()。

__toString()是快速獲取對象的字符串信息的便捷方式,似乎魔術方法都有一個“自動“的特性,如自動獲取,自動打印等,__toString()也不例外,它是在直接輸出對象引用時自動調用的方法。

__toString()的作用

當我們調試程序時,需要知道是否得出正確的數據,比如打印一個對象時,看看這個對象都有哪些屬性,其值是什么,如果類定義了toString方法,就能在測試時,echo打印對象體,對象就會自動調用它所屬類定義的toString方法,格式化輸出這個對象所包含的數據。

下面我們來看一個__toString()的實例,代碼如下:

  1.  class Person{  
  2.      private $name = "";  
  3.      function __construct($name = ""){  
  4.                      
  5.          $this->name = $name;  
  6.      }  
  7.      function say(){  
  8.                      
  9.          echo "Hello,".$this->name."!
    "
    ;    
  10.      }  
  11.      function __tostring(){//在類中定義一個__toString方法  
  12.          return  "Hello,".$this->name."!
    "
    ;      
  13.      }  
  14.  }  
  15.  $WBlog = new Person('WBlog');  
  16.  echo $WBlog;//直接輸出對象引用則自動調用了對象中的__toString()方法  
  17.  $WBlog->say();//試比較一下和上面的自動調用有什么不同  
  18. ?> 
  19. //程序輸出: 
  20. //Hello,WBlog! 
  21. //Hello,WBlog! 

如果不定義“__tostring()”方法會怎么樣呢?例如在上面代碼的基礎上,把“ __tostring()”方法屏蔽掉,再看一下程序輸出結果:

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

由此可知如果在類中沒有定義“__tostring()”方法,則直接輸出以象的引用時就會產生誤法錯誤,另外__tostring()方法體中需要有一個返回值。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 石渠县| 辽源市| 根河市| 东明县| 富源县| 海宁市| 安岳县| 中阳县| 紫金县| 万山特区| 金门县| 康保县| 南陵县| 芦溪县| 荃湾区| 西城区| 古交市| 台北市| 兰西县| 安康市| 故城县| 桦川县| 灌阳县| 怀仁县| 大悟县| 张家川| 闽清县| 张家界市| 莱芜市| 区。| 景洪市| 天门市| 灵石县| 汕头市| 二手房| 永定县| 蓝田县| 朝阳区| 镇赉县| 衢州市| 乌恰县|