[英]Naming convention: singular vs plural for classes describing entities in PHP
我認為在 MySQL 中命名表的標准做法是使用復數名稱。
引用這些表的類也應該是復數?
例如,假設您有一個名為 Users 的表,用於身份驗證。
使用 doctrine ORM 或多或少像這樣在實體 class 中描述該表:
namespace Company\BlogBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
* @ORM\Table(name="Users")
*/
class Users
{
/**
* @ORM\Id
* @ORM\Column(type="integer", name="user_id")
* @ORM\GeneratedValue(strategy="AUTO")
*
* @var integer $userId
*/
protected $userId;
/**
* @ORM\Column(type="string", length="255", name="first_name")
*
* @var string $userName
*/
protected $userName;
...
}
這個對嗎?
還是應該以單數(“用戶”)命名 class“用戶”?
如果您的 class 應該代表一個真實世界項目的實例,那么從語義上我會說單數形式可能是 go 的一個。 數據庫表用於存儲多個項目,因此復數形式在那里是合適的。 無論哪種方式,只要您保持一致,這並不重要。
在數據庫中,它們是復數,因為它是一個包含很多它們的表; 一張有很多用戶的表。 作為一個 object,這是一個奇異的東西; 單個用戶。 我通常保持我的課程單一。
Class 代表一個數據庫行(一個實體)應該具有單數名稱。 Doctrine 2 默認行為是以相同的方式命名數據庫表。 如果您願意,您可以在每個 @Table 注釋中重新配置它,但我建議您堅持使用 Doctrine 命名約定 - 數據庫表的單數名稱也是可以接受的。
我還訂閱使用具有單數名稱的表名,因為一行表示表的一項,就像 object 表示 class 的一個實例一樣。 唯一的例外可能是表的每一行都包含例如序列化(或等效)項目,即位置的“鄰居”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.