首页 > 解决方案 > $this 在 php 中如何工作?

问题描述

$this我只想要PHP 中的行为清晰。从下面的程序中,我想知道如何将 B 类中的 $this 引用到 A 类成员,同时我如何使用 $this 来引用 B 类范围。

 <?php //php 7.0.8

  class A{ 
     public $name="test"; 
     public function func1(){
       echo $this->name="classAFunc";
    }
  }
 class B extends  A {
    public $name="classB";
    public function func2(){
      echo $this->name ;
   }   
 }

   $test = new B();
   echo $test->name; // classB
   echo $test->func1();//classAFunc
   echo $test->func2();//classAFunc //I want this should output classB

?>

如果我去哪里错了,请指出。你指的是在这里玩:运行这个程序

标签: phpoopthis

解决方案


//classAFunc //我希望这应该输出classB

$this 与实现您想要的无关,因为func1您程序中的函数将name属性从更改"classB""classAFunc",这就是您在这里所做的

echo $test->name; // classB
echo $test->func1();//classAFunc (func1 sets the name property to classAFunc)
echo $test->func2();//classAFunc //name property of the object is already changed by func1

你可以打电话来得到你想要func2()func1()

或者您可以func2()设置名称属性,如下所示

public function func2(){
    echo $this->name = "classB";
} 

注意:B扩展时A它们的name属性会被合并,这意味着 的对象B将只有 1 个name属性而不是 2 个!


推荐阅读