一般我們做php項目 類里面 定義的方法 或者 屬性 都是普通的 什么時候該用 static 方法和屬性 有什么例子的
我很少用 靜態屬性 就有一次用過 我在做會員中心 要獲取 會員菜單的時候 我用的
private static $menu = array();
大家可以討論下嗎
回復內容:
一般我們做php項目 類里面 定義的方法 或者 屬性 都是普通的 什么時候該用 static 方法和屬性 有什么例子的
我很少用 靜態屬性 就有一次用過 我在做會員中心 要獲取 會員菜單的時候 我用的
private static $menu = array();
大家可以討論下嗎
當方法與實例關系不大時,也就是當你希望擺脫實例化的限制直接使用類中的一個方法或屬性時,可以定義為 static。
此外在效率上:
類名訪問靜態方法 > 實例訪問靜態方法 > 實例訪問非靜態成員方法
但是,過多地定義靜態方法或屬性無疑會對類的封裝性和安全性造成一定影響。
btw,如果屬性與實例的關系幾乎為0時,建議定義為 const 常量。
在一個類里面,不變的一些東西可以使用static,比如,數據庫鏈接的dsn,還有比如你問題中提到的會員菜單。
我一般不排斥業務代碼用靜態方法/屬性,但框架/公共的代碼還是要極力避免靜態方法和屬性的(少數如工廠方法的情況可以排除),因為這涉及
擴展性 調用方寫死類名意味著要改變行為幾乎只能改類的代碼,無法通過繼承來override
可測試性 靜態方法/屬性 在測試的時候往往會對插樁造成困難
耦合度 特制static屬性可以被外部修改的時候,會大幅度提升耦合度。 public static的屬性有修改行為的話和全局變量幾乎只有名字的區別,災難程度是一樣的 本條技術文章來源于互聯網,如果無意侵犯您的權益請點擊此處反饋版權投訴 本文系統來源:php中文網