2010-07-14 143 views
2

我在看ZendCasts的教程,我在想他使用的代碼。下面是一個簡化版本PHP檢查變量isset,空,定義等

class TestClass { 
    private $_var; 
    private static function getDefaultView() { 
     if (self::$_var === null) { ... } // this is the line in question 
    } 
} 

我想知道爲什麼像isset(self::$_var)這樣的東西不能用來代替? 當我使用self::我需要$符號來引用變量?我不能做self::_var=====有什麼不同

回答

1

這些是幾個問題。

我不知道爲什麼是這樣isset(個體經營:: $ _ VAR)不代替

這是無動於衷。使用isset的優點是,如果變量未定義,則不會發出通知。在這種情況下,self::$_var總是被定義的,因爲它是一個聲明的(非動態)屬性。如果變量爲nullisset也會返回false。

當我使用self ::我需要$符號來引用變量?

請注意,這不是一個常規變量,它是一個類屬性(因此self,它指的是方法的類)。是的,除非這是一個常數。例如: -

class TestClass { 
    const VAR; 
    private static function foo() { 
     echo self::VAR; 
    } 
} 

如何==從===

這已被要求多次在這個網站單獨不同。

1

===操作者的意思是「等於相同類型的和」,所以沒有自動型鑄造發生。像0 == "0"是真的,但是0 === "0"不是。

self::$var語法只是語法。用$來引用一個變量,不用$來引用一個函數。

self::語法用於靜態訪問(類變量,類方法,與由this引用的實例變量)。