ホームページ  >  記事  >  バックエンド開発  >  PHP での __set と __get の使用例

PHP での __set と __get の使用例

WBOY
WBOYオリジナル
2016-07-25 09:03:051066ブラウズ
  1. class person {

  2. function __get( $property ) {
  3. $method = "get{$property}";
  4. if ( method_exists( $this, $method ) ) {
  5. return $this->$method();
  6. }
  7. }

  8. function __isset( $property ) {

  9. $method = "get{$property}";
  10. return (method_exists( $this, $method ) );
  11. }

  12. function getName() {

  13. return "Bob";
  14. }
  15. function getAge() {
  16. return 44;
  17. }
  18. }
  19. print "
    ";<li>$p = new Person();<li>if ( isset ( $p->name ) ) {<li> print $p->name;<li>} else {<li> print "nopen";<li>}<li>print "
    ";
  20. // 出力:
  21. // ボブ
  22. ?>

复制代

演示代2:

  1. class person {
  2. private $_name;
  3. private $_age;

  4. function __set( $property, $value ) {

  5. $method = "set{$property}";
  6. if (method_exists( $this, $method ) ) {
  7. return $this->$method( $value );
  8. }
  9. }
  10. function __unset( $property ) {
  11. $method = "set{$property}";
  12. if (method_exists( $this, $method ) ) {
  13. $this->$method( null );
  14. }
  15. }
  16. function setName( $name ) {
  17. $this->_name = $name;
  18. if ( ! is_null( $name ) ) {
  19. $this->_name = strtoupper($this->_name) );
  20. }
  21. }

  22. function setAge( $age ) {

  23. $this->_age = $age;
  24. }
  25. }
  26. print "
    ";</li>
    <li>$p = new person();</li>
    <li>$p->name = "ボブ";</li>
    <li>$p->age = 44;</li>
    <li>print_r( $p );</li>
    <li>unset($p->name);</li>
    <li>print_r( $p );</li>
    <li>print "
    ";
  27. ?> ;

复制代

输出结果: 人物オブジェクト ( [_name:個人:プライベート] => ボブ [_年齢:人物:非公開] => 44 ) 人物オブジェクト ( [_name:個人:プライベート] => [_年齢:人物:非公開] => 44 )



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