1, this
1. Um dies zu verwenden, müssen Sie über einen Objektkontext verfügen, andernfalls wird ein Fehler gemeldet: Schwerwiegender Fehler: Verwendung von $this, wenn nicht im Objektkontext.
2. Dies kann Methoden und Attribute in dieser Klasse aufrufen oder einstellbare Methoden und Attribute in der übergeordneten Klasse
2. Selbst kann auf diese statischen Eigenschaften zugreifen und Statische Methoden in der Klasse können auf statische Eigenschaften und statische Methoden in der übergeordneten Klasse zugreifen.
2. Wenn Sie self verwenden, müssen Sie es nicht instanziieren.2. Wenn Sie parent verwenden, müssen Sie
1 nicht instanziieren . Dieses Objekt kann Methoden und Attribute in dieser Klasse und der übergeordneten Klasse aufrufen.
<?php class test{ public $public; private $private; protected $protected; static $instance; static $good = 'tankzhang <br>'; public $tank = 'zhangying <br>'; public function __construct(){ $this->public = 'public <br>'; $this->private = 'private <br>'; $this->protected = 'protected <br>'; } public function tank(){ //私有方法不能继承,换成public,protected if (!isset(self::$instance[get_class()])) { $c = get_class(); self::$instance = new $c; } return self::$instance; } public function pub_function() { echo "you request public function<br>"; echo $this->public; } protected function pro_function(){ echo "you request protected function<br>"; echo $this->protected; } private function pri_function(){ echo "you request private function<br>"; echo $this->private; } static function sta_function(){ echo "you request static function<br>"; } } class test1 extends test{ static $love = "tank <br>"; private $aaaaaaa = "ying <br>"; public function __construct(){ parent::tank(); parent::__construct(); } public function tank(){ echo $this->public; echo $this->protected; echo $this->aaaaaaa; $this->pro_function(); } public function test1_function(){ echo self::$love; echo self::$good; echo parent::$good; echo parent::$tank; //Fatal error: Access to undeclared static property: test::$tank echo self::$tank; //Fatal error: Access to undeclared static property: test::$tank } static function extends_function(){ parent::sta_function(); self::pro_function(); echo "you request extends_private function<br>"; } } error_reporting(E_ALL); $test = new test1(); $test->tank(); //子类和父类有相同名字的属性和方法,实例化子类时,会调用子类中的方法。 test1::test1_function(); test1::extends_function(); //执行一部分后,报Fatal error: Using $this when not in object context in D:\xampp\htdocs\mytest\www4.php on line 32 ?>
3 im Code, test1::extends_function(); dieser Schritt meldet einen Fehler und meldet, dass $this in einem Nicht-Objekt verwendet wird. Warum ist das so? test1::extends_function(); ruft nur eine Methode in der Klasse auf und wird nicht instanziiert. Wenn $this in der übergeordneten Klasse verwendet wird, wird ein Fehler gemeldet
Weitere Artikel über die Unterschiede zwischen self, parent und this in PHP-Klassen und -Beispielen finden Sie auf der chinesischen PHP-Website!