php什么情況下使用靜態屬性,oop-做php項目什么時候該使用靜態屬性呢

一般我們做php項目 類里面 定義的方法 或者 屬性 都是普通的 什么時候該用 static 方法和屬性 有什么例子的

我很少用 靜態屬性 就有一次用過 我在做會員中心 要獲取 會員菜單的時候 我用的

private static $menu = array();

大家可以討論下嗎

回復內容:

一般我們做php項目 類里面 定義的方法 或者 屬性 都是普通的 什么時候該用 static 方法和屬性 有什么例子的

我很少用 靜態屬性 就有一次用過 我在做會員中心 要獲取 會員菜單的時候 我用的

private static $menu = array();

大家可以討論下嗎

當方法與實例關系不大時,也就是當你希望擺脫實例化的限制直接使用類中的一個方法或屬性時,可以定義為 static。

此外在效率上:

類名訪問靜態方法 > 實例訪問靜態方法 > 實例訪問非靜態成員方法

但是,過多地定義靜態方法或屬性無疑會對類的封裝性和安全性造成一定影響。

btw,如果屬性與實例的關系幾乎為0時,建議定義為 const 常量。

在一個類里面,不變的一些東西可以使用static,比如,數據庫鏈接的dsn,還有比如你問題中提到的會員菜單。

我一般不排斥業務代碼用靜態方法/屬性,但框架/公共的代碼還是要極力避免靜態方法和屬性的(少數如工廠方法的情況可以排除),因為這涉及

擴展性 調用方寫死類名意味著要改變行為幾乎只能改類的代碼,無法通過繼承來override

可測試性 靜態方法/屬性 在測試的時候往往會對插樁造成困難

耦合度 特制static屬性可以被外部修改的時候,會大幅度提升耦合度。 public static的屬性有修改行為的話和全局變量幾乎只有名字的區別,災難程度是一樣的 本條技術文章來源于互聯網,如果無意侵犯您的權益請點擊此處反饋版權投訴 本文系統來源:php中文網

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/538877.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/538877.shtml
英文地址,請注明出處:http://en.pswp.cn/news/538877.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

vscode運行python文件_vscode怎么運行python文件

1、首先需要確保安裝了VScode的Python插件,打開Python腳本,可以直接拖入,點擊文件,點擊首選項里的用戶設置,這時候會用戶設置配置文件。2、然后在左邊文件CtrlF搜索Python關鍵字,找到pythonPath所在行3、然…

python輸出日期語句_如何從Python的原始語句中提取時間-日期-時間段信息

經過幾天的研究,我想出了以下方法來解決提取問題。在識別命題,然后識別月份并進行提取。在識別“-”,然后識別月份并進行提取。在部分代碼如下所示。(節選,需要上下文中的依賴項)new_w new_s.split()for j in range(len(new_w)):…

datepicker動態初始化

datepicker 初始化動態表單的input,需要調用jquery的on方法來給未來元素初始化。 //對動態添加的時間文本框進行動態初始化$(table).on("focus", ".datepicker", function () {//添加data屬性未來只初始化一次if ($(this).data("datepicke…

oracle中存儲過程 =,oracle中的存儲過程使用

一 存儲過程的基本應用1 創建存儲過程(SQL窗口)create or replace procedure update_staffasbeginupdate staff set name xy;commit;end update_staff;存儲過程適合做更新操作,特別是大量數據的更新2 查看存儲過程在數據字典中的信息(SQL窗口)select object_name,o…

python項目如何上線_django項目部署上線(示例代碼)

前言完善的django項目上線,有很多種上線的方法,比如apache, uwsgi, nginx等。這里只介紹2種,一種是django自帶的,另外一種則是nginx uwsgi完成介紹。這里的系統環境采用的是ubantu系統, python環境采用的是python3, d…

如何檢查python的庫是否安裝成功_如何測試redis是否安裝成功

下載Redis 下載好后 復制所在位置 cd 跳到 D:\Java\64bit 圖中的目錄位置 這樣便啟動成功了。 設置redis密碼的話要 到redis.conf中找到 requirepass關鍵字 設置密碼為123456 redis-cli.exe 進入客戶端 然后 auth 123456 注釋: auth 密碼 set 對象名 [a] 值[123] ge…

第三方類庫的學習心態

我們需要牢牢的記住:所有的第三方庫能實現的功能,我們使用原生的API只要花時間和精力也能實現,但是可能會出現很多的bug而且會花費較多的時間和精力,而且性能也不一定很好,第三方的庫會幫我們封裝底層的一些代碼&#…

HTTP返回碼

響應碼由三位十進制數字組成,它們出現在由HTTP服務器發送的響應的第一行。響應碼分五種類型,由它們的第一位數字表示:1.1xx:信息,請求收到,繼續處理2.2xx:成功,行為被成功地接受、理…

oracle樹結構統計,ORACLE 遞歸樹型結構統計匯總

區域平臺統計報表,省--市--區 匯總,還有各級醫院,匯總與列表要在一個列表顯示。用到ORACLE 會話時臨時表 GLOBAL TEMPORARY TABLE ON COMMIT PRESERVE ROWS;遞歸樹: START WITH P.PARENTORG ‘ROOT‘CONNECT BY PRIOR P.ORG…

我們真的需要使用RxJava+Retrofit嗎?

原文:http://blog.csdn.net/TOYOTA11/article/details/53454925 點擊閱讀原文 RxJava詳解:http://gank.io/post/560e15be2dca930e00da1083 Retrofit詳解:http://www.tuicool.com/articles/AveimyQ --------------------------------------…

python ide如何運行_ide - 如何運行Python程序?

你問我很高興! 我正在努力在我們的wikibook中解釋這個問題(這顯然是不完整的)。 我們正在與Python新手合作,并且必須通過您正在詢問的內容幫助我們! Windows中的命令行Python: 使用編輯器中的“保存”或“另…

邏輯回歸算法_算法邏輯回歸

logistic回歸又稱logistic回歸分析,是一種廣義的線性回歸分析模型,常用于數據挖掘,疾病自動診斷,經濟預測等領域。例如,探討引發疾病的危險因素,并根據危險因素預測疾病發生的概率等。以胃癌病情分析為例&a…

使用docker搭建wordpress網站

概述 使用docker的好處就是盡量減少了環境部署,可靠性強,容易維護,我使用docker搭建wordpress的主要目標有下面幾個首先我重新生成數據庫容器可以保證數據庫數據不丟失,重新生成wordpress容器保證wordpress網站數據不丟失&#xf…

XUtils之注解機制詳解

原文:http://blog.csdn.net/rain_butterfly/article/details/37931031 點擊閱讀原文 ------------------------------------------------------ 這篇文章說一下xUtils里面的注解原理。 先來看一下xUtils里面demo的代碼: [java] view plaincopy print?…

oracle ko16mswin949,mysql字符集 - osc_wq7ij8li的個人空間 - OSCHINA - 中文開源技術交流社區...

恰當的字符集,暢快的體驗!00、Oracle字符集Subsets and Supersets #子集與超集Table A-11 Subset-Superset PairsSubset(子集)Superset(超集)AR8ADOS710AR8ADOS710TAR8ADOS720AR8ADOS720TAR8ADOS720TAR8ADOS720AR8APTEC715AR8APTEC715TAR8ARABICMACTAR…

曼徹斯特編碼_兩種編碼方式以及兩種幀結構

一、不歸零制編碼(Non-Return to Zero)對于不歸零制編碼是最簡單的一種編碼方式,正電平代表1,負電平代表0。如下圖:其實在不歸零制編碼中有一個很明顯的缺陷,那就是它不是自同步碼。對于上圖,你知道它傳輸的數據是什么…

python用一行代碼編寫一個回聲程序_使用Python的多回聲測驗

我在寫一個程序來管理一個五問多的問題- 關于全球變暖的選擇測驗和計算數字 正確答案。 我首先創建了一本字典,比如:questions \ { "What is the global warming controversy about?": { "A": "the public debate over wheth…

iOS開發學習路線

iOS開發學習路線 前言 這里筑夢師,是一名正在努力學習的iOS開發工程師,目前致力于全棧方向的學習,希望可以和大家一起交流技術,共同進步,用簡書記錄下自己的學習歷程. 個人學習方法分享本文閱讀建議 1.一定要辯證的看待本文. 2.本文主要是本人對iOS開發經驗中總結的知識點 3.本…

Android快速開發框架XUtils

原文地址:http://blog.csdn.net/rain_butterfly/article/details/37812371 點擊閱讀原文 -------------------------------------------- https://github.com/wyouflf/xUtils https://github.com/wyouflf/xUtils3 XUtils是基于afinal開發的,比afina…