ホームページ >バックエンド開発 >PHPチュートリアル >PHPオブジェクト指向__toString()の使い方を詳しく解説_PHPチュートリアル
この記事では、PHPのオブジェクト指向__toString()の詳しい使い方を紹介します
オブジェクト参照を直接出力する際に、__toString()メソッドが自動的に呼び出されます。
先ほども言いましたが、クラス内で「--」で始まるメソッド名を宣言するメソッド(PHPが提供)は、ある時点で別の状況下で自動的に呼び出されて実行されるメソッドです。 " メソッドも自動的に呼び出されます。オブジェクト参照が直接出力されるときに呼び出されるメソッドも自動的に呼び出されます。オブジェクト参照はポインタであると前述しました。たとえば、"$p=new Person()" では、$p はクラス内で「__toString()」メソッドを定義すると、「キャッチ可能な致命的なエラー: クラス Person のオブジェクトを文字列に変換できませんでした」のようなエラーが出力されます。オブジェクト参照を直接出力しても、エラーは生成されませんが、「__toString()」メソッドで返された文字を出力するために「__toString()」メソッドが自動的に呼び出されるため、「__toString()」メソッドにはリターンが必要です。値 (return ステートメント)。
コード
コードは次のとおりです | コードをコピー |
// 簡単なクラスを宣言します パブリック関数 __construct($foo) { $class = new TestClass('Hello'); //オブジェクトを直接出力します |
PHP オブジェクト指向プログラミングのマジック メソッド __set で、マジック メソッドとは何かを紹介しましたが、この章ではマジック メソッド __tostring() も紹介します。
__toString() は、オブジェクトの文字列情報を素早く取得する便利な方法です。マジックメソッドには自動取得、自動出力などの「自動」機能があるようです。__toString() も例外ではありません。自動的に呼び出されるオブジェクト参照。
__toString()の関数
プログラムをデバッグするときは、正しいデータを取得しているかどうかを知る必要があります。たとえば、オブジェクトを印刷するときに、そのオブジェクトにどのような属性があり、その値が何であるかを確認できます。クラスで toString メソッドが定義されている場合、テスト中にオブジェクト本体をエコー印刷すると、オブジェクトは定義された toString メソッドを自動的に呼び出します。所属するクラスごとに、このオブジェクトに含まれるデータをフォーマットして出力します。
__toString() の例を見てみましょう
コードは次のとおりです | コードをコピー |
02クラスの人{ 03 プライベート $name = "" ;04 関数 __construct($name = ""){ 05 06 $this->name = $name07 } 08関数say(){ 09 10 echo "こんにちは、".$this->name."! 12 function __tostring(){//クラス内に __toString メソッドを定義します 13 return "こんにちは、".$this->name."! "; 14 } 15 } 16 $WBlog = 新しい人('WBlog') 17 echo $WBlog;//オブジェクト参照を直接出力すると、オブジェクト内の __toString() メソッドが自動的に呼び出されます 18 $WBlog->say();//上記の自動呼び出しとの違いを比較してみます 19 ?> プログラム出力:こんにちは、Wブログ!
|
「__tostring()」メソッドが定義されていない場合はどうなりますか?たとえば、上記のコードに基づいて、「__tostring()」メソッドをブロックし、プログラムの出力を確認します。