クラスをインスタンス化した後、クラスの属性にアクセスするときは、常に $インスタンス名 -> 属性名 の形式でアクセスすることは誰もが知っています。それでは、echo または print を使用してオブジェクトを直接出力しようとしたことがありますか?その結果。これは機能しないはずで、エラーが報告されるだろうという人もいます。はい、そのような直接出力では確かにエラーが報告されますが、マジック メソッド __toString を使用すると問題ありません。 __toString() メソッドは、オブジェクトを出力する前にまず文字列に変換します。これにより、echo または print を使用して出力できるようになります。
インスタンス分析:
<?php header("content-type:text/html;charset=utf-8"); class Preson{ public $name; private $age; function __construct($name,$age) { $this->name = $name; $this->age = $age; } public function __toString() { return $this->name . '今年已经' . $this->age . '岁了'; } } $preson = new Preson('小明',18); echo $preson;
コード分析:
最初に人間のクラスを作成し、属性を定義し、コンストラクターを作成し、次にこのクラスをインスタンス化し、最後にクラス名を直接エコーします。ページにエラー メッセージが表示されることがわかります: クラス Preson のオブジェクトは D:WWWtostring.php の 15 行目で文字列に変換できませんでした。これは、オブジェクトのクラスを文字列に変換できず、出力できないことを意味します。したがって、__toString() メソッドを追加し、必要な結果をメソッド内で直接返すだけです。
以上がマジックメソッド ___toString() インスタンスの詳細な説明 (PHP 上級オブジェクト指向チュートリアル)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。