我在想,$this->name
和$this->$name
之間有什麼區別? $this
也必須嚴格命名爲這個或者它可以是任何東西?
12
A
回答
20
$this
是保留的變量名稱,不能用於其他任何內容。它特別指向您當前正在工作的對象。您必須使用$this
,因爲您不知道將分配哪個變量對象。
$this->name
指當前類的變量name
$this->$name
指的是類變量什麼的$name
值。因此
$name = "name";
echo $this->$name; // echos the value of $this->name.
$name = "test";
echo $this->$name; // echos the value of $this->test
6
$這是在PHP中使用指向你正在使用它的類的當前實例中(quoting)保留名稱:
僞變量
$this
可用 當從 對象上下文中調用方法時。$this
是參考 到調用對象(通常是 對象到該方法所屬 但可能另一個目的,如果 方法是從第二個對象的 內靜態調用)。
使用$this->name
,您使用的名稱當前對象的name
訪問屬性。這意味着你將訪問哪些名字包含在$name
局部變量的性質 -
當使用$this->$name
,$名稱訪問屬性之前確定。
例如,對於代碼的這一部分:
$name = 'abc';
echo $this->$name;
你會真正呼應了美國廣播公司財產的內容,如果你這樣寫:
echo $this->abc;
做這件事時,你使用variable variables(引用):
類屬性可以由也可以使用變量屬性名稱訪問 。
可變屬性名稱將在 調用的範圍內解決,解析爲 。
舉例來說,如果你有 這樣的表達式$foo->$bar
, 然後局部範圍將是$bar
檢查 ,其價值將被用作 的$foo
屬性的名稱。
這個 也是如果$ bar是一個數組 訪問。
2
更新後彈出此問題。我喜歡這個問題,所以我想我會添加自己的差異例子。
class Test
{
public $bar = 'bar';
public $foo = 'foo';
public function __construct()
{
$bar = 'foo';
$this->bar; // bar
$this->$bar; // foo
}
}
相關問題
- 1. 「Exchange Legacy Distinguished Name」和「Active Directory Distingushed Name」之間有什麼區別?
- 2. 使用./configure(php)--disable- [name]和--without- [name]之間有什麼區別?
- 3. .getAttribute(「name」)和.name之間有什麼區別?
- 4. Vue.js中{{name}}和{{{name}}}之間的區別是什麼
- 5. 編寫`:name =>「String」`和`name:「String」`有什麼區別?
- 6. Name和x:Name有什麼區別?
- 7. WPF:'Name'和'x:Name'有什麼區別?
- 8. Info.plist和[app name] -Info.plist有什麼區別?
- 9. Name和CanonicalName有什麼區別?
- 10. colnames(x [1])< - 「name」和colnames(x)[1] < - 「name」之間的區別是什麼?
- 11. Angular2 Form輸入中的#name和[(ngModel)] =「name」有什麼區別?
- 12. <class name>之間的區別。 <var name>和自我。 <var name>在python類
- 13. $ this-> requestElement()和$ this-> element()之間的區別是什麼?
- 14. getExtras(name).getString和getIntent()。getStringExtra(name)之間的區別
- 15. std :: string name和std :: string&name之間的C++區別
- 16. loadClass(String name)和loadClass(String name,boolean resolve)之間的區別
- 17. {Server Name} localhost與。\ SqlExpress之間有什麼區別
- 18. 「this」,「$ this」和「$(this)」之間的區別是什麼?
- 19. 在面向對象的php類中,$ this-> name = $ name是什麼意思?
- 20. $ this-> params ['url']和$ this-> params ['named']之間的區別
- 21. 與Jboss.xml中的<jndi-name>和<local-jndi-name>有什麼不同?
- 22. Javascript中的var name = function(){}和函數名(){}有什麼區別嗎?
- 23. FUNCALL和#'function-name in common lisp有什麼區別?
- 24. org-mode中#+ NAME和#+ LABEL有什麼區別?
- 25. ActionScript中obj [name]和obj.name有什麼區別?
- 26. ng-model =「name」和ng-model =「user.name」有什麼區別
- 27. 目標c中的(NSString)* name和(NSString *)名稱有什麼區別?
- 28. 函數調用和goto&NAME在Perl中有什麼區別?
- 29. 在彈簧配置中,使用name和id有什麼區別?
- 30. python中的self.variable name和classname.variable之間的區別
您的語法錯誤。用雙引號混合單引號是我們? (試圖修復它,你覆蓋了我) – 2010-02-05 05:26:17
@查哈:呃,再次,早上太早^^謝謝你注意到:-) - 呵呵,我們都編輯了我的答案來糾正這個問題,我看到了:-D ;;我們也在同一時間編輯了我們的評論:-D – 2010-02-05 05:28:23
如果我們編程,我們會被擊沉,因爲StackOverflow沒有註釋檢出/鎖:) – 2010-02-05 05:30:32