php中this和self的区别是什么

2020-08-13 10:29:50

php中this和self的区别是:self调用的是类,而$this调用的是实例化的对象。self可以访问本类中的静态属性和静态方法,以及const定义的常量,this可以调用本类中的方法和属性。

区别:

self调用的是类,而$this调用的则是实例化的对象。

(推荐教程:php教程)

下面我们来详细说明一下:

1、self可以访问本类中的静态属性和静态方法,可以访问父类中的静态属性和静态方法。用self时,可以不用实例化。

代码示例:

      class self_test {              static $instance;           public function __construct(){              self::$instance = 'instance';//静态属性只能通过self来访问          }              public function tank(){              return self::$instance;//访问静态属性          }      }       $str = new self_test();      echo $str->tank();

结果输出:

instance

2、self可以访问const定义的常量

代码示例:

    class self_test {            const  NAME = 'tancy';         public function tank(){            return self::NAME;        }    }     $str = new self_test();    echo $str->tank();

三、this可以调用本类中的方法和属性,也可以调用父类中的可以调用的方法和属性,除了静态属性和const常量,基本上都可以使用this调用。

代码示例:

    class self_test {        public $public;            private $private;            protected $protected;         public function __construct(){            $this->public = 'public';            $this->private = 'private';            $this->protected = 'protected';        }            public function tank(){            return $this->public;        }            public function dell(){            return $this->private;        }            public function datesrt(){            return $this->protected;        }    }     $str = new self_test();    echo $str->tank();    echo "</br>";    echo $str->dell();    echo "</br>";    echo $str->datesrt();

结果:

publicprivateprotected

总结:self是引用静态类的类名,而$this是引用非静态类的实例名。

相关文章 大家在看