亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

為什么是return $this->name; 而不是return $this->$name;

為什么是return $this->name; 而不是return $this->$name;

正在回答

2 回答

PHP面向對象中$this的理解

轉載▼

? ?分類:?PHP ? ?

在定義一個類時,因為沒有對類實例化(對象),因而也無法得知對象的具體名稱是什么。這時,如果想調用類中的成員方法或成員變量,就只能通過偽變量$this調用,$this顧名思義就是指類本身,需要注意的一點是$this?只能在類內部使用。否則將出錯。

有一點值得注意的是,在類內部調用變量時,有遇到過兩種寫法:$this->name以及$this->$name;這兩者有什么區別?

以下屬個人理解,如有錯誤,請指教。

參考下面的例子:

<?php

class?Test{

public?$name?=?"abc";

public?$abc?=?"test";

public?function?eTest(){

$name1?=?"name";

echo?$this->name.'<br>';???//?輸出?abc

echo?$this->$name1.'<br>';??//?輸出?abc,因為?$name1?的值是name,相當與這里替換成?echo?$this->name;

$name2?=?$this->$name1;??//?$name2?的值是?abc

echo?$this->$name2.'<br>';??//?輸出?test,同上,相當與是?echo?$this->abc;

}

}

$a?=?new?Test();

$a?->eTest();

?>

下面我們分步驟來理解:

1、可以先將$this->name和$this->$name看成"$this->變量名",變量名可以是name也可以是$name,這看起來有些沖突,我們將$name換個變量,如$test,即name和$test作為變量名。

2、理解一個變量中存在有兩個因素,即變量名和變量值。這樣就可以簡單的理解上面的變量名了。name本身就是一個變量的變量名,$test則可以理解為以一個變量值為變量名的變量。


3 回復 有任何疑惑可以回復我~
#1

C小明

這樣的解釋只會更麻煩
2016-07-26 回復 有任何疑惑可以回復我~

首先 你要知道 這是在使用類。

其次,要明白在類中 $this->的含義,$this->name 是該類的一個屬性,$name 是一個變量,$this->$name.不正確,沒有這個命名規范。

最后,你不妨將這些都打印一遍加深理解

1 回復 有任何疑惑可以回復我~
#1

Dull 提問者

它聲明的變量名不是$name嗎?為什么取這個值的時候就去掉$了,。。這些都輸出過,$this->name; 報錯了,
2015-08-27 回復 有任何疑惑可以回復我~
#2

asher111 回復 Dull 提問者

name 是這個實例的一個屬性
2015-12-20 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

為什么是return $this->name; 而不是return $this->$name;

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號