命名约定:PHP 中描述实体的类的单数与复数

rfc*_*484 3 php orm entities naming-conventions doctrine-orm

我认为在 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;
    ...
}
Run Code Online (Sandbox Code Playgroud)

这样对吗?

还是应该用单数(“用户”)来命名“用户”类?

Nev*_*kes 5

如果您的类应该表示现实世界项目的实例,那么从语义上讲,我会说单数形式可能是合适的。数据库表用于存储多个项目,因此复数形式是合适的。不管怎样,只要你保持一致,这并不重要。


Ond*_*tes 5

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