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

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

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
發布: 2016-08-04 09:21:55
原創
1128 人瀏覽過

為什麼在普通函數裡面定義一個變數和類別裡面定義一個屬性不一樣呢?在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()還沒執行。
事實上物件管理是很複雜的,簡單說,不管你怎麼寫,在運行的時候也已經被預處理了,所有屬性在實例化的時候先分配內存,然後才執行構造。

相關標籤:
php
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
怎麼學好php
來自於 1970-01-01 08:00:00
0
0
0
PHP擴充intl
來自於 1970-01-01 08:00:00
0
0
0
php數據獲取?
來自於 1970-01-01 08:00:00
0
0
0
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板