簡體   English   中英

命名約定:描述 PHP 中實體的類的單數與復數

[英]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.

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