この記事で共有する内容は、[php クラスとオブジェクト] のマジック メソッドに関するもので、必要な友人は参照できます
マジック メソッド (マジック メソッド)
__construct()__destruct()__callStatic()__set()__isset()__unset()__wakeup()__invoke()__clone() __debugInfo()
__sleep() と。 __wakeup()
public array __sleep ( void )void __wakeup ( void )
は、文字列として扱われる場合にクラスがどのように応答するかに使用されます。たとえば、 echo $obj; は何かを表示するはずです。 このメソッドは文字列を返す必要があります。そうでない場合は、E_RECOVERABLE_ERROR レベルの致命的なエラーが発行されます。 __toString() メソッドでは例外をスローできません。致命的なエラーが発生します。
Example #2 简单示例<?php// Declare a simple classclass TestClass{ public function __toString() { return '类被当成字符串时tostring返回字符串'; // return intval('tostring返回值的内容不为字符串');//Recoverable fatal error: Method TestClass::__toString() must return a string value } }$class = new TestClass();echo $class;//echo (string)$class; // 未定义 __toString()方法,并将对象转换为字符串,报错Recoverable fatal error: Object of class TestClass could not be converted to string?>
PHP 5.2.0 より前では、__toString() メソッドは echo または print で直接使用された場合にのみ有効であることに注意してください。
PHP 5.2.0 以降では、任意の文字列環境 (%s 修飾子を使用した printf() 経由など) で使用できますが、非文字列環境 (%d 修飾子の使用など) では使用できません。
__invoke()
mixed __invoke ([ $... ] )
関数を呼び出してオブジェクトを呼び出そうとすると、__invoke() メソッドが自動的に呼び出されます。 (PHP 5.3.0) __set_state() 関連推奨事項: [php クラスとオブジェクト] traversal 以上が[phpのクラスとオブジェクト] マジックメソッドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。Example #3 使用 __invoke()<?phpclass CallableClass {
function __invoke($x) {
var_dump($x); //int(5)
}
}$obj = new CallableClass;$obj(5);
var_dump(is_callable($obj)); //bool(true)?>