ホームページ >バックエンド開発 >PHPチュートリアル >PHPオブジェクト指向__toString()の使い方を詳しく解説_PHPチュートリアル

PHPオブジェクト指向__toString()の使い方を詳しく解説_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:49:45893ブラウズ

この記事では、PHPのオブジェクト指向__toString()の詳しい使い方を紹介します


オブジェクト参照を直接出力する際に​​、__toString()メソッドが自動的に呼び出されます。 先ほども言いましたが、クラス内で「--」で始まるメソッド名を宣言するメソッド(PHPが提供)は、ある時点で別の状況下で自動的に呼び出されて実行されるメソッドです。 " メソッドも自動的に呼び出されます。オブジェクト参照が直接出力されるときに呼び出されるメソッドも自動的に呼び出されます。オブジェクト参照はポインタであると前述しました。たとえば、"$p=new Person()" では、$p はクラス内で「__toString()」メソッドを定義すると、「キャッチ可能な致命的なエラー: クラス Person のオブジェクトを文字列に変換できませんでした」のようなエラーが出力されます。オブジェクト参照を直接出力しても、エラーは生成されませんが、「__toString()」メソッドで返された文字を出力するために「__toString()」メソッドが自動的に呼び出されるため、「__toString()」メソッドにはリターンが必要です。値 (return ステートメント)。

コード

コードは次のとおりです コードをコピー

// 簡単なクラスを宣言します
クラステストクラス
{
パブリック $foo;

パブリック関数 __construct($foo) {
$this->foo = $foo;
}
// __toString メソッドを定義し、メンバー属性 $foo
を返す パブリック関数 __toString() {
return $this->foo;
}
}

$class = new TestClass('Hello');

//オブジェクトを直接出力します
$class をエコー;
?>

PHP オブジェクト指向プログラミングのマジック メソッド __set で、マジック メソッドとは何かを紹介しましたが、この章ではマジック メソッド __tostring() も紹介します。


__toString() は、オブジェクトの文字列情報を素早く取得する便利な方法です。マジックメソッドには自動取得、自動出力などの「自動」機能があるようです。__toString() も例外ではありません。自動的に呼び出されるオブジェクト参照。


__toString()の関数

プログラムをデバッグするときは、正しいデータを取得しているかどうかを知る必要があります。たとえば、オブジェクトを印刷するときに、そのオブジェクトにどのような属性があり、その値が何であるかを確認できます。クラスで toString メソッドが定義されている場合、テスト中にオブジェクト本体をエコー印刷すると、オブジェクトは定義された toString メソッドを自動的に呼び出します。所属するクラスごとに、このオブジェクトに含まれるデータをフォーマットして出力します。

__toString() の例を見てみましょう

「__tostring()」メソッドが定義されていない場合はどうなりますか?たとえば、上記のコードに基づいて、「__tostring()」メソッドをブロックし、プログラムの出力を確認します。
コードは次のとおりです コードをコピー

02クラスの人{

03 プライベート $name = ""

;

04 関数 __construct($name = ""){

05

06 $this->name = $name

07 }

08関数say(){

09

10 echo "こんにちは、".$this->name."!
";

11 }

12 function __tostring(){//クラス内に __toString メソッドを定義します

13 return "こんにちは、".$this->name."!
";

14 }

15 }

16 $WBlog = 新しい人('WBlog')

17 echo $WBlog;//オブジェクト参照を直接出力すると、オブジェクト内の __toString() メソッドが自動的に呼び出されます

18 $WBlog->say();//上記の自動呼び出しとの違いを比較してみます

19 ?>

プログラム出力:

こんにちは、Wブログ!


こんにちは、Wブログ!

キャッチ可能な致命的なエラー: クラス Person のオブジェクトを文字列に変換できませんでした


クラスに「__tostring()」メソッドが定義されていない場合、オブジェクトへの参照を直接出力すると構文エラーが発生することがわかります。また、__tostring()メソッドには戻り値が必要です。体。



http://www.bkjia.com/PHPjc/632687.htmlwww.bkjia.com

本当http://www.bkjia.com/PHPjc/632687.html技術記事この記事では、PHPのオブジェクト指向__toString()の詳しい使い方を紹介します...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。