php新手請教: 什麼時候該用class,什麼時候該用function?

來源:互聯網
上載者:User
在一些問題上,類和直接用函數都能解決。而且我看某些php架構中,諸多類裡面的方法都不需要依賴這個類的執行個體 ,這些方法屬於工具性的方法,而且這些類裡面沒有任何屬性(變數),那這種情況下使用類還有什麼意義呢?如果不聲明static的話,還要先執行個體化才能調用,這比函數麻煩的多。那為什麼許多php類庫還要用一堆class,去實現幾個function就能實現的功能呢?

所以說,到底什麼情況下該用function,什麼情況下該用class?

回複內容:

在一些問題上,類和直接用函數都能解決。而且我看某些php架構中,諸多類裡面的方法都不需要依賴這個類的執行個體 ,這些方法屬於工具性的方法,而且這些類裡面沒有任何屬性(變數),那這種情況下使用類還有什麼意義呢?如果不聲明static的話,還要先執行個體化才能調用,這比函數麻煩的多。那為什麼許多php類庫還要用一堆class,去實現幾個function就能實現的功能呢?

所以說,到底什麼情況下該用function,什麼情況下該用class?

class的功能是對function的打包,當你需要打包多個function成一個模組(class)時,就用class而不是裸的function。

什麼時候用,見仁見智,因地制宜,不必非要追求完美的答案

我覺得題主可能對於物件導向的哲學有沒理解透徹的地方。
物件導向的class並不是把一堆function封裝成一個模組這麼簡單,他更多的是讓你把代碼世界中的各種東西抽象成一個事物(也就是對象),然後賦予他動作和標籤,也就是方法和屬性。
比如說使用者member他可以登陸,可以發帖,他名字叫昌維,那麼可以給他登陸和發帖方法,還有一個name屬性。
所以你這個問題我的回答是,如果是一些很小的功能,或者很通用的功能,並沒有和任何對象有耦合關係的情況下用function,否則就是用class。

這是一個很有意思的問題,正如你所說:『到底什麼情況下該用function,什麼情況下該用class?』

什麼情況?隨意舉3例:

  1. 一次性任務?

  2. 長期維護,商務邏輯複雜,變化頻繁?

  3. 長期維護,基礎支援,如開發架構?

通常一次性任務,用什麼無所謂了,完成任務即可。而需要長期維護的任務,就不僅僅是function或者class的問題了。這是一個工程,軟體工程。

企業級軟體系統與過去相比,更大也更複雜,變化也更頻繁,如何降低複雜度、應對變化,推動了軟體工程研究,也催生了表達能力更強的進階語言的演化。在設計上通過分解、抽象、階層等手段來降低複雜度、應對變化。

物件導向技術給出的一味藥方,包括抽象、封裝、模組化、階層、類型、並發、持久等原則。傳世藥方還有很多。也留下許多精典如《編程格調》、《代碼大全》、《敏捷式軟體開發 (Agile Software Development)-原則、模式與實踐》、《編寫可讀代碼的藝術》、《軟體設計重構》、《公司專屬應用程式架構模式》......

那麼答案是什麼呢?我也不清楚,或許你需要一個複雜的系統折磨一下,理解一些原則指導實踐,知行合一。

如果工具性的函數比較多的話,包在工具類裡作為靜態函數來調用會比較清晰,也方便對不同用途的工具函數進行分類。

歸類。

class Userfunction namefunction sexfunction age...
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.