ホームページ >バックエンド開発 >PHPチュートリアル >PHP オブジェクト指向の __tostring() と __invoke() の詳細なコード例
オブジェクトをstringとして使用すると、このメソッドが自動的に呼び出され、このメソッドではオブジェクトを示す特定の文字列を返すことができます。文字列への変換。この魔法の方法は比較的一般的です。
注: このメソッドが定義されていない場合、オブジェクトを文字列として使用することはできません。
<?php ini_set('display_errors', 1); class A{ public $name; public $age; public $sex; function construct($name, $age, $sex){ $this->name = $name; $this->age = $age; $this->sex = $sex; } } $obj1 = new A('张三', 15, '男'); echo $obj1; //echo 后面为字符串,而对象不是字符串,会报错 $v1 = "abc" . $obj1; //.为字符串连接符,会报错 $v2 = "abx" + $obj1; //+为加法运算符,会报错?>
3つのエラー内容は
Catchable fatal error: Object of class A could not be converted to string Catchable fatal error: Object of class A could not be converted to string Notice: Object of class A could not be converted to int
<?php ini_set('display_errors', 1); class A{ public $name; public $age; public $sex; function construct($name, $age, $sex){ $this->name = $name; $this->age = $age; $this->sex = $sex; } function tostring(){ $str = "姓名:" . $this->name; $str .= "年龄:" . $this->age; $str .= ",性别:" . $this->sex; return $str; //这里可以返回“任何字符串内容” } } $obj1 = new A('张三', 15, '男'); echo $obj1; //调用tostring(),不会报错?>
実行結果
姓名:张三年龄:15,性别:男
このメソッドは、オブジェクトが関数として使用されるときに自動的に呼び出されます。これは一般に推奨されません。
りー以上がPHP オブジェクト指向の __tostring() と __invoke() の詳細なコード例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。