Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么我们必须使用$this->;接线员PHP_Php_Oop - Fatal编程技术网

为什么我们必须使用$this->;接线员PHP

为什么我们必须使用$this->;接线员PHP,php,oop,Php,Oop,我正在用PHP开发一个应用程序。我正在试图弄清楚$this->的用法以及为什么它总是首选 我的意思是,我们可以简单地使用此代码在方法中回显属性值 <?php class place{ public $country; public function countryName($country){ echo $country; } } $info = new place(); $info->countryName("Nepal"); ?>

我正在用PHP开发一个应用程序。我正在试图弄清楚$this->的用法以及为什么它总是首选

我的意思是,我们可以简单地使用此代码在方法中回显属性值

<?php
class place{
    public $country;
    public function countryName($country){
        echo $country;
    }
}
$info = new place();
$info->countryName("Nepal");
?>

但是,在示例中,我看到$this->是这样使用的:

<?php
class place{
    public $country;
    public function countryName($country){
        $this->country = $country;
        echo $this->country;
    }
}
$info = new place();
$info->countryName("Nepal");
?>


使用$this->是首选方法还是第一种方法完全正常?

$this->country
将回显您的班级级别
$country
,而只
回显$country
将回显您的方法级别
$country
。这都是因为PHP中对象的工作方式和变量的范围。当你继续看的时候,你会看到更多的用法,

$this->country
将呼出你的类级别
$country
,而
呼出$country
将呼出你的方法级别
$country
。这都是因为PHP中对象的工作方式和变量的范围。当您继续查看时,您将看到更多的使用此功能

第一个圆弧不是回显属性,而是回显传入的值

第二个弧将传入的值指定给属性,然后使用$this->country来回显属性


如果在第一个弧中回显$this->country,则不会得到任何回显。

第一个弧不是回显属性,只是回显传入的值

第二个弧将传入的值指定给属性,然后使用$this->country来回显属性


如果在第一个弧中回显$this->country,则不会得到任何回显。

$this
引用的是当前对象

根据php.net

当从对象上下文中调用方法时,伪变量$this可用$这是对调用对象的引用(通常是该方法所属的对象,但如果该方法是从辅助对象的上下文静态调用的,则可能是另一个对象)


$此
正在引用当前对象

根据php.net

当从对象上下文中调用方法时,伪变量$this可用$这是对调用对象的引用(通常是该方法所属的对象,但如果该方法是从辅助对象的上下文静态调用的,则可能是另一个对象)

帮助您引用类变量

例如:

   public function countryName($country){
         $this->country = $country;
        echo $this->country;
    }
您的
$this->country
引用的是类var,需要将其设置为参数
$country

帮助您引用类变量

例如:

   public function countryName($country){
         $this->country = $country;
        echo $this->country;
    }

您的
$this->country
引用的是类变量,需要将其设置为参数
$country

表示该类的任何实例。因此,当您创建一个对象
$USA
并调用
countryName($country)
$this
将表示对象
$USA

<?php
$USA = new place();
$USA->countryName("USA");
?>

$this
表示类的任何实例。因此,当您创建一个对象
$USA
并调用
countryName($country)
$this
将表示对象
$USA

<?php
$USA = new place();
$USA->countryName("USA");
?>
国家是相对于阶级的吗

$country 
是相对于方法而言的

国家是相对于阶级的吗

$country 

与方法相比,使用
$this->country
$country
相比的优势在于,您也可以在其他地方使用
$this->country
。该值存储在对象
$info

例如:

   public function countryName($country){
         $this->country = $country;
        echo $this->country;
    }
/#1例
班级{
public$country;//未使用此选项
公共功能countryName($country){
回声$国家;
}
}
$info=新位置();
$info->countryName(“尼泊尔”);
//结果:
//尼泊尔
//#2个案例:使用$this
班级{
public$country;//未使用此选项
公共功能countryName($country){
$this->country=$country;
echo$这个->国家;
}
公共函数wheremi(){//无参数
echo“你在这个国家”.$this->country.“;
}
}
$info=新位置();
$info->countryName(“尼泊尔”);
$info->mi();
//结果:
//尼泊尔
//你在尼泊尔

使用
$this->country
$country
相比的优势在于,您也可以在其他地方使用
$this->country
。该值存储在对象
$info

例如:

   public function countryName($country){
         $this->country = $country;
        echo $this->country;
    }
/#1例
班级{
public$country;//未使用此选项
公共功能countryName($country){
回声$国家;
}
}
$info=新位置();
$info->countryName(“尼泊尔”);
//结果:
//尼泊尔
//#2个案例:使用$this
班级{
public$country;//未使用此选项
公共功能countryName($country){
$this->country=$country;
echo$这个->国家;
}
公共函数wheremi(){//无参数
echo“你在这个国家”.$this->country.“;
}
}
$info=新位置();
$info->countryName(“尼泊尔”);
$info->mi();
//结果:
//尼泊尔
//你在尼泊尔

不是PHP在OOP领域的专有方法。第一种方法不回显任何属性。。。您无法比较这两种代码。@JayBlanchard,PHP处理
this
的方式与其他语言(如Java和C)不同。True@DarylBennett,但是
this
的概念在整个OOP中是持久的。
this
在OOP领域中不是PHP独有的。第一种方法不回显任何属性。。。您无法比较这两种代码。@JayBlanchard,PHP处理
this
的方式与其他语言(如Java和C)不同。是的@DarylBennett,但是
这个
的概念贯穿整个OOP。对不起,看来我错了。您可以在Java和其他OOP中不使用它进行编码,但在PHP中,您需要使用
$this
对不起,看起来我是