首頁 > 後端開發 > php教程 > php新手請教: 什麼時候該用class,什麼時候該用function?

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

WBOY
發布: 2016-09-19 09:16:33
原創
1787 人瀏覽過

在一些問題上,類別和直接用函數都能解決。而且我看某些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的問題了。這是一個工程,軟體工程。

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

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

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

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

歸類。

<code>class User

function name
function sex
function age
...</code>
登入後複製
相關標籤:
php
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板