2011-03-16 64 views
0

我有一個類user,當啓動update.php時,它在/update/user.php中啓動。此類處理用戶相關查詢的數據庫,如編輯,刪除,創建等需要關於命名PHP中的2個類的建議

我在創建一個新的類/src/user.php又稱user將在數據庫上執行用戶相關的查詢的過程,但只有檢索它們(並輸出)它們。如檢索他們的用戶ID,用戶組,電子郵件等。

我發現需要命名它們兩個user,但顯然當檢索到update.php時會出現衝突。你能給出什麼建議來命名這兩個不同的類,儘管它們在我的庫中是分開的區域,但執行類似的操作?

使用PHP 4

+2

在任何情況下,您都不應該在開發人員認爲2年以上死亡的語言中進行新的開發。也就是說,它也不會以任何有意義的方式影響這個問題的答案... – Charles 2011-03-16 07:16:59

+0

我很想升級到PHP 5. – Jared 2011-03-16 07:22:39

+0

你可能有令人信服的理由,爲什麼你不能切換到5,但重申因爲這真的很重要:PHP 4是一匹死馬,甚至沒有獲得安全修補程序,並且具有比5更有限的OOP功能。2011年從零開始學習PHP 4非常不尋常。如果你的僱主/客戶/無論有一個遺留的生產應用程序運行在4,他們真的應該考慮將其切換到5 - 尤其是如果它是面向公衆的。通常不那麼痛苦。 – 2011-03-16 07:32:41

回答

2

如果他們都查詢,但只有一個人寫道,那麼我會建議像。

UserWrite 
UserRead 

UserCreate 
UserAccess 
+0

我已經考慮過這個,但是'UserWrite'只會在我想對用戶執行一個操作時發起,這比'UserRead'要少得多。這就是爲什麼我有這個泡菜。我一定會考慮你的建議。 – Jared 2011-03-16 07:24:48

+0

我選擇在'user write'類中添加前綴,並且暫時將'user read'類保留爲'user'。感謝您的建議。 – Jared 2011-03-16 07:46:39

+0

其實,「用戶寫入」有可能成爲「更新」的「子類」嗎?所以如果我想創建一個新用戶,我會調用'$ update-> user-> create'而不是'$ user-> create'? – Jared 2011-03-16 07:50:27

0

我明白你的問題,但你認爲你真的要創建2個不同的類來執行相同的操作?你可以在/src/user.php中創建它,顯然可以在任何你想要的地方使用它。你應該以這樣的方式在這個類中創建方法,以便在這兩個問題中使用它們。即檢索信息並進行更新。

+0

不是。我將兩者分開,以使它們明顯分離,因爲雖然它們在相同的事物上運行 - 用戶 - 它們執行「相反」的功能。 – Jared 2011-03-16 07:28:23

2

爲了呈現的替代,整個命名結構代替只是建議名稱。 Zend Framework和其他庫具有與文件在樹中的位置相對應的命名結構。半虛構的例子:

Class name    Is in 
----------------------------------------------------------- 
Zend_Auth    /Zend/Auth.php 
Zend_Auth_Adapter  /Zend/Auth/Adapter.php 
Zend_Auth_Helper   /Zend/Auth/Helper.php 
Zend_Auth_Adapter_HTTP /Zend/Auth/Adapter/HTTP.php 

所以下劃線是目錄分隔符,名字的最後一個元素是PHP文件的名稱。

這樣做的主要原因是它使autoloading非常容易,但它也是按任務排序庫的好方法。另外,當你看到代碼中某處使用了某個類時,你總是可以告訴哪個文件位於這是一個很大的優點。

在你現在使用的方法中,我看到的問題是「src」對於那個類實際做了什麼很不清楚。也許一個更有說服力的名字(比如「工具」或「查詢」)會是順序的,或者是主要的用戶類,並且應該被命名爲「用戶」?

應用上述例子到結構可能導致

Class name     Is in 
------------------------------------------------------------ 
MyAppname_User_Update  /User/Update.php 
MyAppname_User    /User.php 

哦,有什麼@Charles說,在他的評論。你絕對不應該再爲PHP 4開發。它是一個死的版本,並且是no longer supported.

+0

表示同意,ZF的命名約定確實很不錯,一個採用 – add9 2011-03-16 07:24:30

+0

有趣的命名約定。我根本就不會考慮它。我拒絕使用它,因爲我處於PHP的(很長)學習階段,而且我的庫的文件結構經常發生變化。 – Jared 2011-03-16 07:27:21

+0

@Jazza我知道你的意思,夠公平的。 – 2011-03-16 07:32:24

0

在OOP中,你的update.php被稱爲BaseDAO.php,而user.php被稱爲UserDAO.php(數據訪問對象)。但是因爲你不使用OOP,所以我猜想use可以將它命名爲BaseService.php和UserService。php

0

我建議你創建一個類來創建,編輯,刪除和檢索與用戶相關的記錄。然後管理用戶角色以限制對方法的訪問,而不是爲一個對象類創建兩個單獨的類。

與現實世界相比的解釋。

比方說,我們有班車。當具有機械角色(或機械師)的用戶使用該車類時,他將能夠訪問諸如repair(), openHood()之類的方法,其中當具有駕駛角色(或駕駛員)的用戶將訪問方法drive()

在這種情況下,創建CarMechanic類和CarDriver類也是非常不合適的。

我想我提出了自己的觀點。