【问题标题】:Naming convention: singular vs plural for classes describing entities in PHP命名约定:在 PHP 中描述实体的类的单数与复数
【发布时间】:2011-06-05 17:38:10
【问题描述】:

我认为在 MySQL 中命名表的标准做法是使用复数名称。

引用这些表的类也应该是复数?

例如,假设您有一个名为 Users 的表,用于身份验证。

这个表将在一个实体类中或多或少地使用 ORM 学说来描述:

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;
    ...
}

这对吗?

或者“Users”类应该以单数命名(“User”)?

【问题讨论】:

  • 我(我认为大多数人)会使用单数,因为它代表单个用户。我也为表格使用单数名称,因为我以单行表示的方式命名它们,但我可能是少数人。

标签: php orm naming-conventions doctrine-orm entities


【解决方案1】:

代表一个数据库行(一个实体)的类应该具有单数名称。 Doctrine 2 默认行为是以相同的方式命名数据库表。如果您愿意,您可以在每个 @Table 注释中重新配置它,但我建议您坚持使用 Doctrine 命名约定 - 数据库表的单数名称也是可以接受的。

【讨论】:

    【解决方案2】:

    如果您的类应该代表真实世界项目的实例,那么从语义上讲,我会说单数形式可能是要使用的。数据库表用于存储多个项目,因此复数形式在那里是合适的。无论哪种方式,只要您始终如一,这并不重要。

    【讨论】:

      【解决方案3】:

      在数据库中,它们是复数的,因为它是一个包含很多它们的表;一张有很多用户的表。作为一个对象,它是一个单一的东西;单个用户。我通常保持我的课程单数。

      【讨论】:

        【解决方案4】:

        我也赞成使用具有单数名称的表名,因为一行代表一个表的一项,就像一个对象代表一个类的一个实例一样。唯一的例外可能是表的每一行都包含例如序列化(或等效)项目,即某个位置的“邻居”。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-09-11
          • 1970-01-01
          • 1970-01-01
          • 2021-03-20
          • 2018-08-25
          • 1970-01-01
          相关资源
          最近更新 更多