2010-08-24 74 views
2

我一直在爲PHP/MySQL編寫大量代碼。到目前爲止,所有程序都使用功能來實現多次/地點的功能。開始發現一些網站很難管理 - 時間去OO。幫助開始使用OO PHP和MySQL

我想了解有關面向對象的PHP的MVCMySQL。我有一些在Java和MVC的經驗,但從來沒有任何與網絡技術,即HTML/CSS/JS等。我不知道如何動態生成的HTML適合與類等

我後關於我可以從哪裏開始的一些推薦。理想情況下,一些網站有從頭開始的很好的例子。我現在不想使用框架,因爲我發現它對你來說太過分了。一旦我理解了MVC的OO方法,我可能會更容易地使用一個框架來管理。

乾杯, 埃文

+0

就以SPL和PDO看看。如果你有Java背景,這些東西可能會很熟悉。 – tamasd 2010-08-24 12:05:17

回答

2

你有很多的代碼,儘管是很難改變的,它可能工作。徹底改革會讓你回想一段時間,所以最好的方法是漸進式的。找到一些能夠從使用對象中獲益的事情,並在那裏使用對象。重構,因爲你可以運行測試。你可以用普通的事件流來處理這件事,事情就會成功。坦率地說,如果你認真去除冗餘和重複,你會經常發現只寫一個小函數的地方可能會造成凹陷。如果你經常這樣做,你會發現在相同數據上工作的功能組。這將建議在哪裏尋找物體。

換句話說,如果你用正確的耳朵聽,代碼會告訴你。

0

如果你只是想要一個良好的網上課程,也許你應該看看

http://www.lynda.com/home/DisplayCourse.aspx?lpk2=653&srchtrk=index%3A1%0Alinktypeid%3A2%0Aq%3APHP%20Object%20Oriented%0Apage%3A1%0As%3Arelevance%0Asa%3Atrue%0Aproducttypeid%3A2%0Acategory_facet%3APHP 

這當然是我的一個朋友非常有用。他在完成本教程時預定的進展非常棒。它介紹了使用PHP構建CMS和麪向對象的基礎知識。

+0

感謝您的鏈接。這看起來不錯,非常詳細。將不得不嘗試這個程序。我發現其他CBT PHP/MySQL培訓中的大部分都是非常程序化的 - 我試圖擺脫這種情況。 – evo 2010-08-26 13:01:31

0

不是一個真正的答案,但太大而不能成爲評論。

實際上HTML與類沒有任何關係,JS和CSS與PHP,MVC和OOP完全無關。

你的代碼應該產生一些數據這將是顯示一種或另一種方式。你可以用一些類來渲染這些數據,但這不是那麼重要的類。雖然JS和CSS通常是完全獨立的文件,但直接從服務器調用瀏覽器,避免了您的應用程序代碼(除非是動態生成的)。無論如何,你應該沒有太多的關注。

儘管將典型PHP應用程序的執行方式與類層次結構綁定在一起,這仍然是一項艱鉅且不平凡的任務。一旦聰明人說過一次,「如果Windows在每次用戶點擊之後必須重新啓動,它將被完全寫入不同「。

+0

感謝您的迴應..目前我的代碼與數據和渲染代碼(html等)有關。我的php scipts在服務器上執行並根據用戶輸入動態生成內容。我不太關心CSS/JS,因爲它們往往是坐在服務器上的靜態文件,而php完全不瞭解它們。但很多HTML都是通過PHP生成的.. 我有很多打印「 evo 2010-08-26 13:06:46

+0

@evo嚴格地說,這些打印「 2010-08-26 17:29:11

+0

其實你可以在這裏找到很多關於模板的SO問題。這裏是我正在使用的另一個例子,http://stackoverflow.com/questions/3140714/以及其他方法 – 2010-08-26 17:35:04

0

我認爲你應該從小塊開始逐步進入OOP。我的意思是你應該爲經常使用的東西編寫簡單的類,例如處理表單,圖像上傳,網站消息,會話處理等。

當你習慣於編程類和對象的工作,它將是時候跳轉到像重構整個「引擎」更大的東西到OOP使用mvc和其他東西。

0

歡迎來到SO。

我絕不是一個PHP專家,這裏是我的思想出現在我的頭頂:

與PHP的面向對象編程確實有幫助,但不太可能作爲救援刪除所有冗餘或使你代碼「整潔」。傳統的PHP編碼方式可以產生很好的代碼。 OO有助於封裝你的代碼以隱藏實現並通過直接組合和/或通過繼承重用其他代碼。

我想說的是,真正關心的是如何將「靜態」html與「動態」PHP解耦。 舉例來說,不應該有很多:

echo "<h1>A title</h1"; 
echo "<p>blah blah blah..."; 

即使在條件打印。

我會說一個頁面/腳本的整個業務邏輯分成幾個函數,並且至少隱藏函數內部的細節。

對於您關於PHP的流行OO框架的問題,CakePHP是一個很好的問題,從Ruby on Rails中獲得靈感。

+0

嗨墊, 這正是我想要避免..我有很多print 「去這裏」; 當您從數據庫動態生成頁面時,有什麼好策略可以避免這種情況? – evo 2010-08-26 13:02:57

0

閱讀MVC Tutorial in PHP瞭解什麼MVC,然後開始使用MVC框架Zend的一樣,CakePHP中,交響樂或笨...