ホームページ > バックエンド開発 > PHPの問題 > php __toString() メソッドの用途は何ですか

php __toString() メソッドの用途は何ですか

青灯夜游
リリース: 2023-03-10 18:20:01
オリジナル
2470 人が閲覧しました

「__toString()」は PHP のマジック メソッドで、オブジェクトを文字列に変換するときに自動的に呼び出されます。これは、文字列として扱われるときにクラスがどのように応答するかに使用されます。このメソッドは、次のことを行う必要があります。 string を返します。それ以外の場合は、「E_RECOVERABLE_ERROR」レベルの致命的なエラーが発行されます。

php __toString() メソッドの用途は何ですか

このチュートリアルの動作環境: 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=&#39;男&#39;)
    {
        $this->name = $name;
        $this->age  = $age;
        $this->sex  = $sex;
    }
    public function __toString()
    {
        return  &#39;go go go&#39;;
    }
}
$person = new Person(&#39;小明&#39;); // 初始赋值
echo $person;
ログイン後にコピー

結果:

go go go
ログイン後にコピー

では、クラスに __toString() マジック メソッドが存在しない場合はどうなるのでしょうか?テストしてみましょう:

コード:

<?php
class Person
{
    public $sex;
    public $name;
    public $age;
    public function __construct($name="",  $age=25, $sex=&#39;男&#39;)
    {
        $this->name = $name;
        $this->age  = $age;
        $this->sex  = $sex;
    }
    
}
$person = new Person(&#39;小明&#39;); // 初始赋值
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 のマジック メソッドを次の表に示します。

Magic メソッドFunction__construct()インスタンス化時に自動的に呼び出されます。 class __destruct() クラスオブジェクトが使用されると自動的に呼び出されます __set() in 未定義のプロパティに値を割り当てるときに自動的に呼び出されます#__get()#未定義のプロパティを呼び出すときに自動的に呼び出されますisset() または empty() 関数を使用すると自動的に呼び出されますunset( を使用すると自動的に呼び出されます) )##__sleep()serialize を使用したシリアル化時に自動的に呼び出されます__wakeup()使用unserialize 逆シリアル化時に自動的に呼び出されます__call()存在しないメソッドの呼び出し時に自動的に呼び出されます__callStatic( ) 存在しない静的メソッドを呼び出すときに自動的に呼び出されます__toString()オブジェクトを文字列に変換するときに自動的に呼び出されます__invoke()オブジェクトをメソッドとして呼び出そうとすると自動的に呼び出されます__set_state()When var_export() 関数を使用し、配列パラメーターを受け入れるときに自動的に呼び出されます。__clone()clone を使用してオブジェクトをコピーするときに自動的に呼び出されます__debugInfo()オブジェクト情報の出力時に var_dump() を使用して自動的に呼び出すPHP ビデオ」チュートリアル》
# __isset()
__unset()
推奨学習: 「

以上がphp __toString() メソッドの用途は何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
php
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート