「__toString()」は PHP のマジック メソッドで、オブジェクトを文字列に変換するときに自動的に呼び出されます。これは、文字列として扱われるときにクラスがどのように応答するかに使用されます。このメソッドは、次のことを行う必要があります。 string を返します。それ以外の場合は、「E_RECOVERABLE_ERROR」レベルの致命的なエラーが発行されます。
このチュートリアルの動作環境: Windows7 システム、PHP7.1 バージョン、DELL G3 コンピューター
__toString()、クラスは次のように扱われます。 文字列の応答メソッド
__toString() は、オブジェクトを文字列に変換するときに自動的に呼び出される PHP のマジック メソッドです。
オブジェクト指向プログラミングでは、PHP が提供する一連のマジック メソッドは、プログラミングに非常に便利であり、PHP で非常に重要な役割を果たします。 PHP のマジック メソッドは通常、__ (2 つのアンダースコア) で始まり、明示的に呼び出す必要はありませんが、特定の条件下で自動的に呼び出されます。
関数:
__toString() メソッドは、文字列として扱われる場合にクラスがどのように応答するかに使用されます。たとえば、`echo $obj;` が表示する内容です。
注:
このメソッドは文字列を返す必要があります。そうでない場合、レベル `E_RECOVERABLE_ERROR` の致命的なエラーが発行されます。
警告:
__toString() メソッドでは例外をスローできません。致命的なエラーが発生します。
コード:
<?php class Person { public $sex; public $name; public $age; public function __construct($name="", $age=25, $sex='男') { $this->name = $name; $this->age = $age; $this->sex = $sex; } public function __toString() { return 'go go go'; } } $person = new Person('小明'); // 初始赋值 echo $person;
結果:
go go go
では、クラスに __toString() マジック メソッドが存在しない場合はどうなるのでしょうか?テストしてみましょう:
コード:
<?php class Person { public $sex; public $name; public $age; public function __construct($name="", $age=25, $sex='男') { $this->name = $name; $this->age = $age; $this->sex = $sex; } } $person = new Person('小明'); // 初始赋值 echo $person;
結果:
Catchable fatal error: Object of class Person could not be converted to string in D:\phpStudy\WWW\test\index.php on line 18 很明显,页面报了一个致命错误,这是语法所不允许的。
拡張情報: PHP のマジック メソッドを次の表に示します。
Function | |
---|---|
インスタンス化時に自動的に呼び出されます。 class | |
クラスオブジェクトが使用されると自動的に呼び出されます | |
in 未定義のプロパティに値を割り当てるときに自動的に呼び出されます | |
# __isset() | |
__unset() | |
##__sleep() | serialize を使用したシリアル化時に自動的に呼び出されます |
__wakeup() | 使用unserialize 逆シリアル化時に自動的に呼び出されます |
__call() | 存在しないメソッドの呼び出し時に自動的に呼び出されます |
__callStatic( ) | 存在しない静的メソッドを呼び出すときに自動的に呼び出されます |
__toString() | オブジェクトを文字列に変換するときに自動的に呼び出されます |
__invoke() | オブジェクトをメソッドとして呼び出そうとすると自動的に呼び出されます |
__set_state() | When var_export() 関数を使用し、配列パラメーターを受け入れるときに自動的に呼び出されます。 |
__clone() | clone を使用してオブジェクトをコピーするときに自動的に呼び出されます |
__debugInfo() | オブジェクト情報の出力時に var_dump() を使用して自動的に呼び出す |
推奨学習: 「 | PHP ビデオ」チュートリアル
以上がphp __toString() メソッドの用途は何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。