課程
/后端開發(fā)
/PHP
/PHP進階篇
為什么是return $this->name; 而不是return $this->$name;
2015-08-27
源自:PHP進階篇 2-2
正在回答
PHP面向?qū)ο笾?this的理解
轉(zhuǎn)載▼
? ?分類:?PHP ? ?
在定義一個類時,因為沒有對類實例化(對象),因而也無法得知對象的具體名稱是什么。這時,如果想調(diào)用類中的成員方法或成員變量,就只能通過偽變量$this調(diào)用,$this顧名思義就是指類本身,需要注意的一點是$this?只能在類內(nèi)部使用。否則將出錯。
有一點值得注意的是,在類內(nèi)部調(diào)用變量時,有遇到過兩種寫法:$this->name以及$this->$name;這兩者有什么區(qū)別?
以下屬個人理解,如有錯誤,請指教。
參考下面的例子:
<?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則可以理解為以一個變量值為變量名的變量。
C小明
首先 你要知道 這是在使用類。
其次,要明白在類中 $this->的含義,$this->name 是該類的一個屬性,$name 是一個變量,$this->$name.不正確,沒有這個命名規(guī)范。
最后,你不妨將這些都打印一遍加深理解
Dull 提問者
asher111 回復(fù) Dull 提問者
舉報
輕松學(xué)習PHP中級課程,進行全面了解,用PHP快速開發(fā)網(wǎng)站程序
1 回答函數(shù)里面的return $this->name具體是什么意思?
1 回答$obj->name=$this->name是什么意思?
4 回答$car->name ..這個name.指的是$name 還是$this->name這個name.
2 回答為什么是echo $car->name而不是echo $car->$name
4 回答$obj->name = $this->name;這句不用都行,是不是已經(jīng)存在當前類下了,不用寫出來都行。。
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網(wǎng)安備11010802030151號
購課補貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動學(xué)習伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號
2015-09-15
PHP面向?qū)ο笾?this的理解
轉(zhuǎn)載▼
? ?分類:?PHP ? ?
在定義一個類時,因為沒有對類實例化(對象),因而也無法得知對象的具體名稱是什么。這時,如果想調(diào)用類中的成員方法或成員變量,就只能通過偽變量$this調(diào)用,$this顧名思義就是指類本身,需要注意的一點是$this?只能在類內(nèi)部使用。否則將出錯。
有一點值得注意的是,在類內(nèi)部調(diào)用變量時,有遇到過兩種寫法:$this->name以及$this->$name;這兩者有什么區(qū)別?
以下屬個人理解,如有錯誤,請指教。
參考下面的例子:
<?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則可以理解為以一個變量值為變量名的變量。
2015-08-27
首先 你要知道 這是在使用類。
其次,要明白在類中 $this->的含義,$this->name 是該類的一個屬性,$name 是一個變量,$this->$name.不正確,沒有這個命名規(guī)范。
最后,你不妨將這些都打印一遍加深理解