目前,我有完全符合程序PHP寫了一個相當大的應用程序。我正在尋求進一步提升我的PHP體驗,並使用面向對象技術重新編寫我的大部分應用程序。程序轉換成PHP的面向對象的PHP
OOP有很多領域可以幫助減少代碼量並使其更易於閱讀。但是,我有幾個問題。
1)這是我的理解,一個類被用作任何數量的對象的藍圖,但任何一個類只代表一個對象,從不超過一個。所以一個班級可以代表一個球員,但不會有多個球員。
2)因爲我有好幾個不同的類別,包括,是否使用「裝載機」類使用spl_autoload_register
加載它們都還是我只是用在程序文件spl_autoload_register
我的應用程序?
編輯:所以我的自動加載磁帶機將是一個類,我再創建一個實例來啓動自動加載或只是功能和spl_autoload_register,我想納入爲避免重複在多個文件中相同的代碼的PHP文件?
3)我的一些類依賴於其他類。我從來沒有遇到過這個,所以我真的不知道答案。如果我包括我的主程序文件中的所有類,但我的播放器類並沒有包括它需要的功能,會因爲主程序球員類的工作包括哪些球員依賴於類的類?
編輯:因此,即使一個類可以實例類型的球員的對象,Player類不是直接由這個類包括,它仍然會正常工作,因爲控制器類不包括Player類?
4)有多種情況下我需要處理我創建的對象。我想知道我該怎麼做。例如,在我的Player類中,我有時需要從一個Player發送一些東西給另一個Player。那麼,我是否需要在Player類中實現一個靜態方法,該方法以兩個參與者作爲參數進行傳輸,或者執行其他操作?
編輯:好的,所以避免靜態方法。現在我遇到了一個嚴重的問題:我的應用程序中有多次運行的方法,但我無法將它們作爲靜態方法實現。我是否應該將它們實現爲實例方法?例如,從一個玩家發送到另一個玩家。我會創建一個實例方法,它需要一個Player對象併發送到它或從呢?
5)我有很多方法不屬於某個類的任何一個實例,它們也不適合作爲靜態方法。這些應該作爲普通還是類似的靜態方法在自己的類中聲明?在這種情況下在實踐中做了什麼?
編輯:是將這些方法都屬於在其中使用它們或者是存儲在自己的「的functions.php」文件中的特定應用程序文件?
6)我想學習如何使用名稱空間,但我的代碼永遠不會被別人使用,我永遠不會在我的應用程序中使用其他人的代碼。名稱空間在我的應用程序中是不是一個無意義的添加,或者學習如何使用它們會是一個好主意嗎?無論如何,一個應用程序是否有一個名稱空間(應用程序名稱?),還是每個類都屬於它自己的名稱空間?
7)最後,是它通常具有數據庫連接一類,也爲網絡方法的類?我的應用程序需要。我認爲我將代碼轉換爲使用面向對象技術的主要問題是確定將哪些方法放在哪裏,因爲目前它們都放在一個整體文件中。
感謝您提供的任何幫助和見解。
感謝您的回覆!你的#1和#4 *真的有助於澄清事情!對於我的應用程序來說,玩家集合絕對有意義,並且使用實例方法傳輸項目也非常有意義。我會聽取大家的意見,遠離靜態方法。 – 2013-03-14 22:51:27