1, this
1. Pour utiliser ceci, vous devez avoir un objet, sinon il signalera une erreur, Erreur fatale : utiliser $this lorsqu'il n'est pas dans le contexte de l'objet.
2. cela peut appeler des méthodes et des attributs dans cette classe, et peut également appeler des méthodes et des attributs réglables dans la classe parent
self
1, self peut accéder aux propriétésstatic et aux méthodes statiques de cette classe, et peut accéder aux propriétés statiques et aux méthodes statiques de la classe parent. 2. Lorsque vous utilisez self, vous n'avez pas besoin d'instancier
3. parent
2. Lorsque vous utilisez parent, vous n'avez pas besoin d'instancier le code
<?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 ?>
.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!