首頁 >後端開發 >php教程 >為什麼在類別裡面定義屬性時不受先後順序的影響?

為什麼在類別裡面定義屬性時不受先後順序的影響?

WBOY
WBOY原創
2016-08-04 09:21:551095瀏覽

為什麼在普通函數裡面定義一個變數和類別裡面定義一個屬性不一樣呢?在a()函數裡面 必須把變數定義在前面 如果把a()函數裡面的$a =1放到return後面就會報錯 為什麼在類別裡面卻不會報錯?雖然大手可能覺得很幼稚 但我搞不懂這個問題

<code>function a(){
    return $a;
    $a=1;
}
echo(a());
----------------------------------------------
class aa{
    function bb(){
          return $this->name;
        }
    public $name=4;    
}
$a=new aa();
$b=$a->bb();  
echo $b;</code>

回覆內容:

為什麼在普通函數裡面定義一個變數和類別裡面定義一個屬性不一樣呢?在a()函數裡面 必須把變數定義在前面 如果把a()函數裡面的$a =1放到return後面就會報錯 為什麼在類別裡面卻不會報錯?雖然大手可能覺得很幼稚 但我搞不懂這個問題

<code>function a(){
    return $a;
    $a=1;
}
echo(a());
----------------------------------------------
class aa{
    function bb(){
          return $this->name;
        }
    public $name=4;    
}
$a=new aa();
$b=$a->bb();  
echo $b;</code>

因為類別是採用先編譯後執行,而面向過程則是流式執行。
一般多是如此,這是我從JS身上悟到的。

最初級的解釋就是$a=new aa();此時屬性$name已經賦值了,但function bb()還沒執行。
事實上物件管理是很複雜的,簡單說,不管你怎麼寫,在運行的時候也已經被預處理了,所有屬性在實例化的時候先分配內存,然後才執行構造。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn