>백엔드 개발 >PHP 튜토리얼 >PHP 매직 메소드 __sleep __wakeup __toString __debuginfo

PHP 매직 메소드 __sleep __wakeup __toString __debuginfo

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB원래의
2016-07-29 09:07:241162검색

__sleep():

serialize()를 사용하여 직렬화할 때 클래스에 __sleep() 매직 메서드가 있는지 감지합니다. 있으면 __sleep()이 호출됩니다. 먼저 직렬화해야 하는 객체의 모든 변수 이름을 포함하는 배열

<code><span><?php</span><span><span>class</span><span>test</span>{</span><span>public</span><span>$name</span>=<span>'demon'</span>;

    <span>private</span><span>$age</span>=<span>'19'</span>;

    <span>public</span><span><span>function</span><span>__sleep</span><span>()</span>{</span><span>return</span> [<span>'name'</span>];
    }  
}

<span>$test</span> = <span>new</span> test();
<span>echo</span> serialize(<span>$test</span>);
<span>//输出结果:O:4:"test":1:{s:4:"name";s:5:"demon";}</span></code>

__wakeup()

serialize()를 사용하여 직렬화할 때 변수가 있는지 감지합니다. 가능한 경우 Magic 메서드 클래스의 __wakeup()은 먼저 __wakeup()을 호출하여 일부 초기화 작업을 수행합니다.

<code><span><?php</span><span><span>class</span><span>test</span>{</span><span>public</span><span>$name</span>=<span>'demon'</span>;

    <span>private</span><span>$age</span>=<span>'19'</span>;

    <span>public</span><span><span>function</span><span>say</span><span>()</span>{</span><span>echo</span><span>"反序列化"</span>;
    }

    <span>public</span><span><span>function</span><span>__wakeup</span><span>()</span>{</span><span>$this</span>->say();
    }   
}

<span>$test</span> = <span>new</span> test();
unserialize(serialize(<span>$test</span>));
<span>//输出结果:反序列化</span></span></code>

__toString()

__toString()은 클래스가 문자열 응답으로 사용되며 문자열만 반환할 수 있습니다.

<code><span><?php</span><span><span>class</span><span>test</span>{</span><span>public</span><span>$name</span>=<span>'demon'</span>;

    <span>private</span><span>$age</span>=<span>'19'</span>;

    <span>public</span><span><span>function</span><span>__toString</span><span>()</span>{</span><span>return</span><span>'test'</span>;
    } 
}

<span>$test</span> = <span>new</span> test();
<span>echo</span><span>$test</span>;
<span>//输出结果:test</span></code>

__debuginfo()

__debuginfo()는 php5.6에 추가된 기능입니다. var_dump()가 클래스일 때의 응답입니다. , 속성의 배열

<code><span><?php</span><span><span>class</span><span>test</span>{</span><span>public</span><span>$name</span>=<span>'demon'</span>;

    <span>private</span><span>$age</span>=<span>'19'</span>;

    <span>public</span><span><span>function</span><span>__debuginfo</span><span>()</span>{</span><span>return</span> [<span>'name'</span>];
    }

}

<span>$test</span> = <span>new</span> test();
var_dump(<span>$test</span>);
<span>//输出结果:object(test)#1 (1) { [0]=> string(4) "name" }</span></code>
').addClass('pre-numbering').hide();를 포함하는 객체를 반환합니다. $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i ').text(i)); }; $numbering.fadeIn(1700); }); });

위 내용은 관련 내용을 포함하여 PHP 매직 메소드인 __sleep __wakeup __toString __debuginfo를 소개하고 있어 PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

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