> CakePHP中文手册 > Cake的命名约定

Cake的命名约定

Section 1 嗯?命名约定 ?

是的,命名约定。按照字典上的解释,Convention有如下意思:

  • 被普遍同意或接受的明确的惯例或看法,比如在大多数地图中都是上北下南
  • 被一个群体普遍遵循的惯例或程序,尤其在社交方面。比如挥手含义的约定。
  • 一个被广泛使用和接受的策略或技巧,就像在戏剧、文学或绘画中旁白的戏剧特性约定。

Cake中的命名约定产生的魔法,我们称之为“自动魔法(automagic)”。我们对CoC的喜好自不必多言, Cake在没有丢失任何灵活性的情况下将使你的开发效率达到惊人的水平。Cake的命名约定真的非常简单和直观。它们萃取自有经验的web开发人员在web领域使用多年的最佳实践。

Section 2 文件的命名

文件名是带有下划线的。遵照一般规则,如果你有一个类MyNiftyClass,那么在Cake中包含这个类的文件必须命名为my_nifty_class.php。

因此如果你看到这些代码片断,你会很自然的发现:

   1.
      如果一个控制器(Controller)被命名为KissesAndHugsController,
      那么它的文件名必须为kisses_and_hugs_controller.php (注意文件名中的_controller)
      
   2.
      如果一个模型(Model)被命名为OptionValue,那么他的文件名必须为option_value.php
      
   3.
      如果一个组件(Component)被命名为MyHandyComponent,那么他的文件名必须为my_handy.php
      (文件名中不需要_component)
   
   4.
      如果一个Helper被命名为BestHelperEver,那么他的文件名必须为best_helper_ever.php
		

Section 3 Models


  • Model类名是单数
  • Model类名的首字母大写,而且如果是多个单词,每个单词的首字母都要大写
  • 例如:Person, Monkey, GlassDoor, LineItem, ReallyNiftyThing
  • 多重联接的表必须这样命名:按照字母排序,第一个表名(s)_第二个表名(s)
  • Model文件名使用小写加下划线的结构。
  • 例如:person.php, monkey.php, glass_door.php, line_item.php, really_nifty_thing.php
  • 和Model相关的数据库表名也使用小写加下划线的结构,但是它们是复数的。
  • 例如:people, monkeys, glass_doors, line_items, really_nifty_things

CakePHP命名约定是为了使代码的创建过程更加精简合理,且使代码具有更高的可读性。如果你发现前面2条已经掌握,你可以忽略。

  • Model命名:在Model定义的时候使用 var $name
  • 和Model相关的表:在Model定义的时候使用 var $useTable

Section 4 Controllers

在/app/config/core.php中还有那么一些高级选项可以供你使用,你可以利用它们使你的URL精巧地适应绝大多数情况。


  • Controller类名是复数
  • Controller类名的首字母大写,而且如果是多个单词,每个单词的首字母都要大写.类名要以Controller结尾。
  • 例如: PeopleController, MonkeysController, GlassDoorsController,LineItemsController, ReallyNiftyThingsController
  • Controller类的文件名由小写字母和下划线组成,必须以”_controller”结尾。因此如果你有一个Controller名为PostsController,那么文件名必须为posts_controller.php
  • 为了protected成员的可见性,controller的action名必须有”-“
  • 为了private成员的可见性,controller的action名必须有”--“

Section 5 Views

  • Views依照它们显示的action来命名
  • view的文件名依照action的名字,并使用小写
  • 例如: PeopleController::worldPeace() 指向一个view /app/views/people/world_peace.tHTML;
            MonkeysController::banana()指向一个view /app/views/monkeys/banana.thtml

你可以强制一个action提交到一个确定的view上,通过在你的action的结尾调用
$this->render('name_of_view_file_without_dot_thtml');
来实现

Section 6 Helpers

Helper类是以首字母大写以及Helper来结尾的方式命名的,文件名中要有下划线
        例如:class MyComponentComponent extends Object 在如下文件中 /app/controllers/components/my_component.php.

如果包含的controller中有如下语句:
var $helpers = array('Html','MyHelper') ;
那么在view中就可以进行这样的访问:
$myHelper->method()。

Section 7 Components

Component类名首字母要大写并以"Component"结尾,文件名则要下划线。
        例如:class MyHelperHelper extends Helper 在如下文件中 /app/views/helpers/my_helper.php.

如果包含的controller中有如下语句:
var $helpers = array('Html','MyHelper') ;
那么在view中就可以进行这样的访问:
$this->MyComponent->method()。

Section 8 Vendors

Vendors并不遵循任何的约定,原因很显然:它们是一些第三方的代码,Cake对它们没有任何影响力