之前有發問過類似的問題,不過沒有講得很清楚我的開發方式。而現在想繼續問一些最近看到的疑問,容我先介紹一下我目前的開發環境和一些作法,想請有經驗的大大們幫我改善我的程式~
本身目前使用的是 mysqli(mariadb) + php7 + jquery3 方式開發,但對於 router 、MVC架構、CLASS NAMESPACE、autoload,CURL 的運作仍然是不太了解,不知道哪個才是正確的做法?從上次的提問到現在已經看了不少YOUTUBE其他高手的實作,發現每個人的做法都不太相同,而導致我不太知道哪種作法才是對的、適合我的。
雖然嘗試了不少新的寫法,例如 OOP mysqli connection,但對於新的觀念仍然想不到該怎麼替換掉自己腦中的做法,因為我知道再寫下去可能會很難維護,也不好讓其他人協作。
我先詳細說明一下我的開發方式,請有經驗的大大教我如何順利地改變作法
- 目前一個網頁就是一個PHP檔案,每一個檔案上跟下都會引入一個 PHP檔案(header.php, footer.php),footer.php主要是放置 JS引入,或是根據檔案名稱的不同引入需要的js,以及各種簡單或複雜的jquery語法檔案。
- header.php 引入的文件就極為複雜,有一個文件夾裡面放了許多sql語句,會進行分類,每個php裡都會有個 switch,根據哪個檔案路徑去引入哪些sql語句,裡面也包含一個文件是許多 function ,雖然有大概的規劃在對的文件中引入該function,但實際上還是跟 class + namespace差的甚遠。(html標頭也會在這個檔案中引入)
- 有個文件是 env.php,會根據host去顯示正確的環境變數
- sql connect.php 目前是每個網頁都會引入,雖然每個網頁都會需要連接資料庫,但這做法似乎不是很對,自從了解OOP後。
- 有個文件是與後端資料庫互動的,叫做 update.php,裡面也是利用 switch + type 來根據 我給的 GET/type 去找到對的行為。就是前端 ajax 帶一個 type 去update.php裡面找對的請求,根據 type的不同做不同的事情。而 update.php裡面中也會引入 sql connect.php、必要的 function和env.php。
- 有個 css.php是引入所有需要的 css檔案,有必要的話也會根據檔案的不同引入不同的css。
我參考了github上大神的寫法,例如 https://github.com/bramus/router 、 https://github.com/phalcon/mvc 、 https://github.com/php-curl-class/php-curl-class 、 https://github.com/ThingEngineer/PHP-MySQLi-Database-Class ... 簡直是新世界,但苦於現在的寫法跟他們天差地遠....
所以我想問問我這樣的擺放方式,能夠怎麼改善,甚至可以將其MVC、CLASS化?我目標是希望能夠讓人看得懂我的程式碼,一起協作。我相信這不容易...但我相信臉書推出一開始的寫法也不是這樣順利。有太多需要改的地方,但我不知道從何開始下手,先從最容易變動的開始....想請有經驗的大大指點迷津,真的非常感謝! 我會時不時補充的!
歡迎大大加l i n e 好友(在我的個人檔案)。有發問問題會優先丟網址給你
已經準備好改善我的程式碼了~
疑問補充:
- namespace + class 的引入跟一堆 function 寫在同個php 然後一次引入,這兩者會有哪些差別?假設你有很多 function ,有些是後端需要,有些是前端顯示需要,你會怎麼擺?
- 每個頁面都引入 sql connect,跟 OOP connect作法有什麼差別?
- js 的管理?假設同一個js檔案中有很多 click, mouse 事件,你會寫在同一個js檔案嗎?
- 我在同一個js檔案中會放置多個 ajax function,也是利用 type 來決定要去找哪個 ajax ,如果是你你會怎麼做?
- css,js 你會在一開始就將css,js 全部引入嗎?或是能用什麼方式有效分開?使該出現的時候再出現,我是用 switch 作法,你會怎麼做?
- 我的 update.php 作法是好的嗎?如果是你會怎麼做?
- 在一個 php 的文件中,基本會有兩個檔案引入,header.php, footer.php,這是可以的做法嗎?