1.const是類中的常量,類外用define定義常量
(var用來定義類內的變量,有添加控制訪問限制的修飾符則可以省略 eq:public protected)
類外:
類外的常量屬於全局,任何位置都可以訪問,任意函數內部都可以訪問外部定義的常量,而且常量一被定義就不可修改或者撤銷
類內:
類內的常量屬於當前這個類,不屬於類的實例對象,因此不能通過$this->訪問,同樣的常量一被定義就不能修改或者撤銷。
類內可以通過 self:: 來訪問常量,類外則通過 類名:: 訪問
2.const只可以修飾類的屬性,不能修飾類的方法,static可以修飾屬性,也可以修飾方法
3.const和static都屬於類本身,而不屬於new后的類實例,類內訪問使用self::,類外使用類名::來訪問;類內的$this指代類實例本身,const和static是屬於類本身,所以無法用$this訪問
4.self::NAME指代const,self::$name指代static;const是常量,是不需要變量符號的,static修飾變量,需要變量符
5.const一旦被定義不可更改,static修飾的變量可以更改
6.static方法中不能使用類的普通成員和方法,這很好理解,調用靜態方法時,不能確定類有沒有被實例化。普通方法中可以使用static屬性和static方法
7.函數內部定義的static和類中定義的static一樣都是作為自身的局部變量使用,每次調用函數用的都會是同一個static變量而不會重新創建新的變量。而類中的static變量只能通過類本身去調用,每次調用的也同樣是同一個static變量
總結:const不會被modify,也不會被copy,static可以被modify,但不會被copy。const更像是個標識符,而static則像靜態資源,可以被訪問並修改