php什么情况下使用静态属性,oop-做php项目什么时候该使用静态属性呢
一般我們做php項(xiàng)目 類里面 定義的方法 或者 屬性 都是普通的 什么時(shí)候該用 static 方法和屬性 有什么例子的
我很少用 靜態(tài)屬性 就有一次用過 我在做會(huì)員中心 要獲取 會(huì)員菜單的時(shí)候 我用的
private static $menu = array();
大家可以討論下嗎
回復(fù)內(nèi)容:
一般我們做php項(xiàng)目 類里面 定義的方法 或者 屬性 都是普通的 什么時(shí)候該用 static 方法和屬性 有什么例子的
我很少用 靜態(tài)屬性 就有一次用過 我在做會(huì)員中心 要獲取 會(huì)員菜單的時(shí)候 我用的
private static $menu = array();
大家可以討論下嗎
當(dāng)方法與實(shí)例關(guān)系不大時(shí),也就是當(dāng)你希望擺脫實(shí)例化的限制直接使用類中的一個(gè)方法或?qū)傩詴r(shí),可以定義為 static。
此外在效率上:
類名訪問靜態(tài)方法 > 實(shí)例訪問靜態(tài)方法 > 實(shí)例訪問非靜態(tài)成員方法
但是,過多地定義靜態(tài)方法或?qū)傩詿o疑會(huì)對(duì)類的封裝性和安全性造成一定影響。
btw,如果屬性與實(shí)例的關(guān)系幾乎為0時(shí),建議定義為 const 常量。
在一個(gè)類里面,不變的一些東西可以使用static,比如,數(shù)據(jù)庫(kù)鏈接的dsn,還有比如你問題中提到的會(huì)員菜單。
我一般不排斥業(yè)務(wù)代碼用靜態(tài)方法/屬性,但框架/公共的代碼還是要極力避免靜態(tài)方法和屬性的(少數(shù)如工廠方法的情況可以排除),因?yàn)檫@涉及
擴(kuò)展性 調(diào)用方寫死類名意味著要改變行為幾乎只能改類的代碼,無法通過繼承來override
可測(cè)試性 靜態(tài)方法/屬性 在測(cè)試的時(shí)候往往會(huì)對(duì)插樁造成困難
耦合度 特制static屬性可以被外部修改的時(shí)候,會(huì)大幅度提升耦合度。 public static的屬性有修改行為的話和全局變量幾乎只有名字的區(qū)別,災(zāi)難程度是一樣的 本條技術(shù)文章來源于互聯(lián)網(wǎng),如果無意侵犯您的權(quán)益請(qǐng)點(diǎn)擊此處反饋版權(quán)投訴 本文系統(tǒng)來源:php中文網(wǎng)
總結(jié)
以上是生活随笔為你收集整理的php什么情况下使用静态属性,oop-做php项目什么时候该使用静态属性呢的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: miui游戏驱动程序偏好设置_米粉必看:
- 下一篇: php如何打出的正方形行列,javasc