>백엔드 개발 >PHP 문제 >PHP __toString() 메소드의 용도는 무엇입니까

PHP __toString() 메소드의 용도는 무엇입니까

青灯夜游
青灯夜游원래의
2021-06-18 17:57:322511검색

"__toString()"은 객체를 문자열로 변환할 때 자동으로 호출되는 PHP의 마법 메서드입니다. 이 메서드는 문자열로 처리될 때 클래스가 응답해야 하는 방식에 사용됩니다. 그렇지 않으면 "E_RECOVERABLE_ERROR" 수준의 치명적인 오류가 발생합니다.

PHP __toString() 메소드의 용도는 무엇입니까

이 튜토리얼의 운영 환경: Windows 7 시스템, PHP 버전 7.1, DELL G3 컴퓨터

__toString(), 클래스가 문자열로 처리될 때의 응답 방법

__toString()은 객체를 문자열로 변환할 때 자동으로 호출되는 PHP 메서드의 마법입니다.

객체 지향 프로그래밍에서 PHP는 프로그래밍에 많은 편의성을 제공하고 PHP에서 매우 중요한 역할을 하는 일련의 매직 메서드를 제공합니다. PHP의 매직 메소드는 일반적으로 __(두 개의 밑줄)로 시작하며 명시적으로 호출할 필요는 없지만 특정 조건에서 자동으로 호출됩니다.

함수:

__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의 매직 메서드는 다음 표에 나와 있습니다. ( )

클래스 인스턴스화 시 자동 호출추천 학습: ""
__destruct() 클래스 객체 사용 시 자동 호출
__set() 정의되지 않은 속성에 값을 할당할 때 자동 호출
__get() 정의되지 않은 속성 호출 시 자동 호출
__isset() isset() 또는 empty() 함수 사용 시 자동 호출
__unset() unset() 사용 시 자동 호출
__sleep() serialize를 사용하여 직렬화할 때 자동으로 호출됨
__wakeup() unserialize를 사용하여 역직렬화할 때 자동으로 호출됨
__call() 존재하지 않는 메서드를 호출할 때 자동으로 호출됨
__callStatic() 존재하지 않는 정적 메서드 호출 시 자동 호출
__toString() 객체를 문자열로 변환 시 자동 호출
__invoke() 객체를 문자열로 사용하려고 할 때 메소드
__set_state() 호출 시 자동 호출 var_export() 함수 사용 시 자동 호출, 배열 매개변수 허용
__clone() clone을 사용하여 객체 복사 시 자동 호출
__debugInfo() 객체 정보를 인쇄할 때 var_dump()를 사용하면 자동으로 호출됩니다
PHP 비디오 튜토리얼

위 내용은 PHP __toString() 메소드의 용도는 무엇입니까의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.