【发布时间】:2010-02-04 22:54:28
【问题描述】:
如果我有线程模型和控制器。
模型和控制器应该是单数还是复数?
我可以显示一个线程,也可以列出线程。
不知道应该用什么。
$thread->get_lists(); // doesnt sound good
$threads->show(); // doesnt sound good
【问题讨论】:
标签: php model-view-controller naming-conventions
如果我有线程模型和控制器。
模型和控制器应该是单数还是复数?
我可以显示一个线程,也可以列出线程。
不知道应该用什么。
$thread->get_lists(); // doesnt sound good
$threads->show(); // doesnt sound good
【问题讨论】:
标签: php model-view-controller naming-conventions
没关系。
我个人对模型使用单数,对控制器使用复数。
然而,重要的是你选择一个方案并一致。
【讨论】:
这取决于型号。如果该类的对象恰好代表一件事,请使用单数,如果它们代表许多事物,请使用复数(但您通常不需要这样的类,请使用数组/集合)。两者都不会发生,否则您应该重新设计 (1)。
我将使用您的线程示例:
如果每个对象都模拟一个线程,则将类命名为“Thread”。如果它一次建模多个线程,则将其称为“Threads”(或“ThreadCollection”等)。
(1) 如果您同时需要单个线程的表示和多个线程的表示,请使用两个不同的类(线程和线程)或创建一个数组或集合后者。然后你就会把它清理干净: $线程->显示(); $threads->list();
【讨论】:
KohanaPHP 很好地处理了它们的单数/复数 MVC 组件。我会检查它以供参考,因为它是有道理的。但归根结底,这真的无关紧要,这取决于程序员。我的意思是,如果您要获取一堆列表,请执行 get_lists(),或者如果您获取列表的内容,请使用 get_list()。
【讨论】:
就像其他人说的那样,没关系。
关于模型,当类表示单行时,我喜欢使用单数,例如当使用 Active Record 或 Table Row Gateway 时,在使用表示表和记录集的类时使用复数,仅仅是因为我可以使这些返回或包含具有单数名称的类,并且我可以区分它们。但话又说回来,我也可以将它们命名为 UserTable、UserCollection 和 User。使用最能代表您的域的内容。
一些框架有命名模型和控制器的约定,以实现一些自动化。例如,默认情况下,单数模型将被变形为使用复数表,因此您不必自己映射它。这称为convention over configuration;结束,因为通常您仍然可以根据需要进行配置。
唯一一次我会说,如何命名模型和控制器并不重要,那就是使用 code convention。
【讨论】:
我知道这是一个老问题,但是我最近与我的同事就这个问题进行了长时间的辩论。
虽然我个人更喜欢控制器的单数,但同时绝对认为单数/复数应该无关紧要/强制执行...
大多数众所周知的 API 都使用复数来表示控制器。这是一个很有可能结束辩论的论点
【讨论】:
表数据库名,使用复数 示例 = “用户”
控制器名称,使用单数和大写 示例 = “用户控制器”
【讨论】: