php - $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
?>
如果我去哪里错了,请指出。你指的是在这里玩:运行这个程序
解决方案
//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 个!
推荐阅读
- javascript - 使用 refs 访问对象
- android - 如何禁用 Firebase 应用内消息按钮操作打开 url
- javascript - React Component:“if else”语句未在返回语句中更新
- c# - 使用 ASP.NET MVC C# Visual Studio 2017 在 DataTable Id 中显示 id 数据和删除
- javascript - ReferenceError:在 vue-cli 3 构建期间未定义窗口
- angular - Angular/NGRX - 防止具有相同参数的重复请求
- c++ - 基本c ++程序上的UBUNTU LTS错误中的Opencv
- javascript - 如何摆脱 chrome 控制台错误?
- php - 在给定文本中查找 PHP 中特定文本的模式
- google-cloud-platform - 如何在数据流管道的 PubSubIO 中实现流控制设置