ホームページ  >  記事  >  バックエンド開発  >  toString() メソッドは何をするのでしょうか?

toString() メソッドは何をするのでしょうか?

WBOY
WBOYオリジナル
2016-06-23 13:50:153069ブラウズ

自動引用だと聞きましたが、意味がわかりません。誰か例を教えてください。
たとえば、下の図、たくさんのことが書かれていますが、目的は何ですか


ディスカッションへの返信 (解決策)

__toString メソッドを使用すると、クラスが文字列に変換する方法を決定できます。
与えた __toString の目的は、フォーム文字列を返すことです

__toString() 関数を含むクラスのオブジェクトを文字列として使用したときに返される値です。
PHP マニュアルに例があり、実行後に確認できます。 。
http://www.php.net/manual/zh/ language.oop5.magic.php#object.tostring

クラスがある場合:

class Person
{
private $name = ""
private; $age = 0;

function __construct($name = "", $age = "")
{
$this->name = $name;

function Say()
{
echo "name:".$this->name."
"."age:".$this->age."
";
}
}

次に、このクラスをインスタンス化して、このインスタンスを印刷します。

$p1 = new person("liuzy",20);
echo $p1 // 明らかに、これはエラーを引き起こします。オブジェクトは参照ハンドルであり、直接印刷できないため、オブジェクトを直接印刷するとエラーが発生します。このとき、__toString() メソッドを使用できます。 __toString() メソッドを Person クラスに追加します。
function __toString()
{
return "I am Person,my name is ".$this->name."
";
}

次に、ページを更新してください。何が見つかりましたか?
__toString() はオブジェクトを直接出力するときに実行されるメソッドであることがわかりました。このメソッドを使用して、クラスに関するいくつかの関連情報を出力できます。注: これは 2 つのアンダースコアであり、メソッドには戻り値が必要です。

PHP 5.2.0 以降、__toString() メソッドが定義されていないオブジェクトを文字列に変換すると、E_RECOVERABLE_ERROR レベルのエラーが発生します。

クラスがある場合:

class Person

{

private $name = "";

function __construct($name = "", $age = "")
{
$this->name = $name;
$this->age = $age; }

function Say()
{
echo "name:".$this->name."
"."age:".$this->age."
";
}
}

ここで、このクラスをインスタンス化し、このインスタンスを出力します:

$p1 = new person("liuzy",20);
echo $p1; //直接印刷するとエラーが発生します
オブジェクトは参照ハンドルであり、直接印刷できないため、明らかにエラーが発生します。このとき、__toString() メソッドを使用できます。 __toString() メソッドを Person クラスに追加します。
function __toString()
{
return "I am Person,my name is ".$this->name."
";
次に、ページを更新してください。何が見つかりましたか?
__toString() はオブジェクトを直接出力するときに実行されるメソッドであることがわかりました。このメソッドを使用して、クラスに関するいくつかの関連情報を出力できます。注: これは 2 つのアンダースコアであり、メソッドには戻り値が必要です。

何のことを言っているのか: オブジェクトは参照ハンドルなので、直接印刷することはできません。ハンドルとは何か、参照とは何ですか?ますますめまいがするよ、何も言わないほうがいいよ。


クラスがある場合:

class Person
{
private $name = "";

function __construct($name = "", $age = "")
{
$this->name = $name;
$this->age = $age;

function Say()
{
echo "name:".$this->name."
"."age:".$this->age."
";
}
}

ここで、このクラスをインスタンス化し、このインスタンスを出力します:

$p1 = new person("liuzy",20);
echo $p1; //直接印刷するとエラーが発生します
オブジェクトは参照ハンドルであり、直接印刷できないため、明らかにエラーが発生します。このとき、__toString() メソッドを使用できます。 __toString() メソッドを Person クラスに追加します。
function __toString()
{
return "I am Person,my name is ".$this->name."
";
}

次に、ページを更新して、何を確認しますか?
__toString() はオブジェクトを直接出力するときに実行されるメソッドであることがわかりました。このメソッドを使用して、クラスに関するいくつかの関連情報を出力できます。注: これは 2 つのアンダースコアであり、メソッドには戻り値が必要です。

何のことを言っているのか: オブジェクトは参照ハンドルなので、直接印刷することはできません。ハンドルとは何か、参照とは何ですか?ますますめまいがするよ、何も言わないほうがいいよ。

基本的なことについては、完全に baidu で行うことができます

クラスがある場合:

class Person
{
private $name = ""

function __construct($name = " ", $age = "")
{
$this->name = $name;
$this->age = $age; }

function Say()
{
echo "name:"。 $ this->name."
"."age:".$this->age."
";
}
}

次に、このクラスをインスタンス化します。次に、このインスタンスを印刷します:

$p1 = new person("liuzy",20);
echo $p1; //直接印刷するとエラーが発生します

オブジェクトが次のとおりであるため、オブジェクトを直接印刷するとエラーが発生します。参照ハンドルは直接出力できません。このとき、__toString() メソッドを使用できます。 __toString() メソッドを Person クラスに追加します。
function __toString()
{
return "I am Person,my name is ".$this->name."
";
}

次に、ページを更新して、何を確認しますか?
__toString() はオブジェクトを直接出力するときに実行されるメソッドであることがわかりました。このメソッドを使用して、クラスに関するいくつかの関連情報を出力できます。注: これは 2 つのアンダースコアであり、メソッドには戻り値が必要です。

何のことを言っているのか: オブジェクトは参照ハンドルなので、直接印刷することはできません。ハンドルとは何か、参照とは何ですか?ますますめまいがするよ、何も言わないほうがいいよ。


実際、Cを学ぶと理解しやすいです。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。