簡體   English   中英

如何組織PHP中的類並從類中訪問數據庫

[英]How do I organize classes in PHP and access database from within class

我從事程序PHP已有8年的編程經驗,最終開始學習OOPHP。 我已經閱讀了許多教程,並且我理解語法並且對使用它感到很自在。 但是,我找不到的是一個實際示例,說明如何設置類文件結構以及如何從類內部訪問數據庫以在其中執行查詢。

我最初的想法是創建一個名為/ class的單​​獨文件夾,並為每個類創建一個文件。 如果一個類擴展了另一個類,我將在子文件中include()父文件。 在我的主要腳本中,我會根據需要調用類。 例如include(/class/member.php)當我需要它們成員類時。

另外,我寫了一個擴展mysqli的數據庫類(我知道你們中的許多人會建議我改用PDO ,並且如果您出於某些原因願意隨時提供它們,盡管我會說我不希望永遠不要使用MySQL。 )。 真正讓我興奮的部分是如何在我的課程中打開數據庫連接。 例如,我的想法是在成員類中傳遞一個member_id ,然后在該類中執行查詢以將其所有屬性設置為該成員的屬性。 最初,我在主腳本中包含數據庫類並為其創建了一個實例,然后在我的成員類中將句柄聲明為全局句柄(我已經閱讀了全局變量是多么邪惡,而且我還是不太喜歡這種解決方案)。 有什么更好的方法可以做到這一點?

謝謝你的幫助!

我認為,學習OOP的最好方法是查看遵循OOP的現有代碼庫。 我建議檢查一下Zend Framework API Docs 如果您覺得它很有希望,請下載該框架並開始使用它。

Zend Framework的酷之處在於它可以用作自頂向下的MVC或獨立的庫,並且在PHP社區中大量使用。

需要注意的一些事情:

  • 類自動加載
  • 類名如何與其各自的目錄結構對齊
  • 如何擴展課程
  • 介面
  • 抽象類

首先,每個課程都有單獨的文件,這絕對是對的。 在這一點上,這幾乎被認為是標准做法。 我將研究類autoloadingspl_autoload_register 我強烈建議首先設置一個自動加載器,當我說您真的不想在包含類文件之前不必進行無數次interface_existsclass_exists調用時,請相信我。

其次,關於您的數據庫調用。 在這里回答了類似的問題,但基本要點是創建一個數據庫實例並將其注入需要數據庫訪問的類中。 至於mysqli ,如果那是您喜歡使用的功能。 非常棒,您沒有使用舊的,已棄用的mysql_*

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM