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对它们没有任何影响力