“Protoss/目录结构”的版本间的差异

来自Blueidea
跳转至: 导航搜索
命名规范
控制器文件的命名
 
(未显示同一用户的14个中间版本)
第1行: 第1行:
 
 
== 目录结构 ==
 
== 目录结构 ==
  
 +
=== 虚拟主机中的部署方案 ===
 
[[文件:snakezero_protossdir.png]]
 
[[文件:snakezero_protossdir.png]]
  
第16行: 第16行:
 
*'''javascript''' JavaScript代码目录
 
*'''javascript''' JavaScript代码目录
  
 +
需要知道的几个目录:<br/>
 +
'''项目目录(application dir)''' 指的是项目(或称应用程序)的控制器、模型、视图所存放的目录(即父目录)<br/>
 +
'''根目录(root dir)''' 指的是存放框架、项目目录的目录<br/>
 +
'''配置文件目录(config dir)''' 指的是存放配置文件的目录<br/>
 +
'''缓存文件目录(cache dir)''' 指的是项目运行过程中所产生的临时文件存放目录<br/>
 +
=== 有条件的话推荐的安全部署方案 ===
 +
[[文件:snakezero protossfilepath.png]]<br/>
 +
以上图为例在项目的trunk文件建立一系列文件夹。
 +
 +
其中public目录为用户的浏览器所能访问的目录,用户通过访问该目录下的入口文件(或URL重写到该文件)来实现使用当前应用程序。
 +
 +
config目录为配置文件目录,tmp为缓存目录,application目录为项目的代码目录,protoss目录为框架目录。以上所有目录,包括public在内,都是必须存在相应功能的目录,但是名字虽推荐按以上方式取名但不强制要求。例如tmp也可以取名为temp或者cache之类的,public可以叫做html或者其他,但是注意要在配置文件中配置这些目录(记得修改名字)。
 +
 +
db目录为开发期间数据库所导出来的SQL文件,docs为当前应用程序的文档。它们的存在是为了更方便的部署和更好的项目管理,没有这些不影响使用,但是希望开发者能够养成一个良好的开发习惯,能够把项目相关的一些东西都记录下来。
 +
 +
注意:当代码release时,docs和db目录最好不要一起发布,仅仅发布项目代码。当然也需要按实际情况进行更人性化的调整。
 +
<br/><br/><br/>
  
 
== 命名规范 ==
 
== 命名规范 ==
第21行: 第38行:
 
所谓常规命名,就是指一般情况下都会按照该命名方法的,而强制命名则指的特殊的命名方式,不同于常规命名。
 
所谓常规命名,就是指一般情况下都会按照该命名方法的,而强制命名则指的特殊的命名方式,不同于常规命名。
  
=== 常规命名===
+
=== 常规命名 ===
为了提高代码的可读性和可维护性,所有的代码都要按照常规命名方法存放,以类'''Model_City'''为例:
+
为了提高代码的可读性和可维护性,所有的代码都要按照常规命名方法存放,我们来看一个例子,下面是类'''Model_City'''的代码片段:
 +
[[文件:snakezero_protossmodelcity.png]]
  
 
以[http://wiki.blueidea.com/images/8/87/snakezero_protossdir.png apps/myappname(见左边,myappname实为您的项目目录名称)]为应用程序目录,其下的目录可用于[[Protoss/自动载入|自动智能载入]]。
 
以[http://wiki.blueidea.com/images/8/87/snakezero_protossdir.png apps/myappname(见左边,myappname实为您的项目目录名称)]为应用程序目录,其下的目录可用于[[Protoss/自动载入|自动智能载入]]。
  
从该目录算起,以“文件夹名/[.../]文件名.php”的形式存放类文件,如类文件中有包含“_”(下划线),则每个下划线所分割的字符串要建立相应的文件夹进行存放,字符串段落越靠前则目录等级越高。
+
从该目录算起,以“文件夹名/[若干文件夹/]文件名.php”的形式存放类文件,类名一般是“文件夹名_[若干文件夹_]文件名”<ref>原则上讲,类文件必需归于一个文件夹,如:class,lib之类的,这样才方便管理。</ref>,如类文件中有包含“_”(下划线),则每个下划线所分割的字符串要建立相应的文件夹进行存放,字符串段落越靠前则目录等级越高。
  
 
例如model目录中有city.php文件,则该文件中的类则是'''Model_City''',请注意,一般来说,'''每个PHP文件中有且仅有一个类''',并且'''每个类必须存放于一个专有的文件'''。
 
例如model目录中有city.php文件,则该文件中的类则是'''Model_City''',请注意,一般来说,'''每个PHP文件中有且仅有一个类''',并且'''每个类必须存放于一个专有的文件'''。
  
 
同理,若要建立类'''Model_User''',则有model/user.php,如果是'''Model_User_Role''',则有model/user/role.php。以此类推。
 
同理,若要建立类'''Model_User''',则有model/user.php,如果是'''Model_User_Role''',则有model/user/role.php。以此类推。
 +
 +
 +
 +
 +
好,我们再来看看第二个例子:分页助手类“Helper_Pager”。
 +
 +
[[文件:snakezero_protosshelperpage.png]]
 +
 +
很明显的,这个文件会放到helper/pager.php这个文件中。
 +
 +
 +
'''但是,这个是框架自带的类,我的类应该怎么放呢?'''
 +
 +
请看[[Protoss/自动载入|自动智能载入]]章节中的优先级说明。
 +
 +
 +
=== 强制命名 ===
 +
在项目的控制器和视图中,我们用到了强制命名。
 +
强制命名是为了避免开发过程中的命名冲突,同样,也为了更好的标明文件作用的权限。
 +
 +
==== 控制器文件的命名 ====
 +
所有的控制器存放于:controller目录下,但是名字为“控制器名_controller.php”,同时类名为“控制器名Controller”。<br/>
 +
我们还是来看个例子,例如'''default'''这个控制器,类名为“'''defaultController'''”,文件名为“'''default_controller.php'''”。<br/>
 +
[[文件:snakezero_protosscontrollerdefault.png]]<br/>
 +
 +
但是我们注意到这里的“<font color="#CE0000">'''Controller_Abstract'''</font>”,它'''不'''是控制器,所以它的命名仍然使用常规命名,而它的文件,也是存在controller目录下,命名为abstract.php。<br/>
 +
关于控制器的更多详情请参阅[[Protoss/控制器|控制器]]。
 +
<br/><br/><br/>
 +
 +
==== 视图文件的命名 ====
 +
在Protoss的应用程序中视图文件是自动载入的,如果按照本命名规则建立相应文件,则会自动载入使用。<br/>
 +
在templates文件下,建立对应的控制器名称的文件夹,如名为'''default'''的控制器则对应“default”文件夹。如果default控制器中有index方法,其相对应的模板文件则是index.php。全路径为“templates/default/index.php”。<br/>
 +
关于视图的更多详情请参阅[[Protoss/视图|视图]]。

2010-07-16T11:28:41的最后版本

目录结构

虚拟主机中的部署方案

snakezero protossdir.png

上图显示的是基于Protoss项目的根文件夹的一种形式,也是虚拟主机用户最常用的一种方式。(但是我们推荐您使用更安全的目录结构,详见:更安全的目录结构。)

图中:

  • index.php 入口文件

所有的访问都由该文件开始,除些文件以外所有的PHP代码都无法直接从浏览器访问,也这更加安全可靠。

  • apps 项目代码目录
    • controller 控制器
    • model 模型
    • templates 模板/视图
  • css CSS样式表目录
  • javascript JavaScript代码目录

需要知道的几个目录:
项目目录(application dir) 指的是项目(或称应用程序)的控制器、模型、视图所存放的目录(即父目录)
根目录(root dir) 指的是存放框架、项目目录的目录
配置文件目录(config dir) 指的是存放配置文件的目录
缓存文件目录(cache dir) 指的是项目运行过程中所产生的临时文件存放目录

有条件的话推荐的安全部署方案

snakezero protossfilepath.png
以上图为例在项目的trunk文件建立一系列文件夹。

其中public目录为用户的浏览器所能访问的目录,用户通过访问该目录下的入口文件(或URL重写到该文件)来实现使用当前应用程序。

config目录为配置文件目录,tmp为缓存目录,application目录为项目的代码目录,protoss目录为框架目录。以上所有目录,包括public在内,都是必须存在相应功能的目录,但是名字虽推荐按以上方式取名但不强制要求。例如tmp也可以取名为temp或者cache之类的,public可以叫做html或者其他,但是注意要在配置文件中配置这些目录(记得修改名字)。

db目录为开发期间数据库所导出来的SQL文件,docs为当前应用程序的文档。它们的存在是为了更方便的部署和更好的项目管理,没有这些不影响使用,但是希望开发者能够养成一个良好的开发习惯,能够把项目相关的一些东西都记录下来。

注意:当代码release时,docs和db目录最好不要一起发布,仅仅发布项目代码。当然也需要按实际情况进行更人性化的调整。


命名规范

Protoss的命名分为两种--常规命名和强制命名。 所谓常规命名,就是指一般情况下都会按照该命名方法的,而强制命名则指的特殊的命名方式,不同于常规命名。

常规命名

为了提高代码的可读性和可维护性,所有的代码都要按照常规命名方法存放,我们来看一个例子,下面是类Model_City的代码片段: snakezero protossmodelcity.png

apps/myappname(见左边,myappname实为您的项目目录名称)为应用程序目录,其下的目录可用于自动智能载入

从该目录算起,以“文件夹名/[若干文件夹/]文件名.php”的形式存放类文件,类名一般是“文件夹名_[若干文件夹_]文件名”[1],如类文件中有包含“_”(下划线),则每个下划线所分割的字符串要建立相应的文件夹进行存放,字符串段落越靠前则目录等级越高。

例如model目录中有city.php文件,则该文件中的类则是Model_City,请注意,一般来说,每个PHP文件中有且仅有一个类,并且每个类必须存放于一个专有的文件

同理,若要建立类Model_User,则有model/user.php,如果是Model_User_Role,则有model/user/role.php。以此类推。



好,我们再来看看第二个例子:分页助手类“Helper_Pager”。

snakezero protosshelperpage.png

很明显的,这个文件会放到helper/pager.php这个文件中。


但是,这个是框架自带的类,我的类应该怎么放呢?

请看自动智能载入章节中的优先级说明。


强制命名

在项目的控制器和视图中,我们用到了强制命名。 强制命名是为了避免开发过程中的命名冲突,同样,也为了更好的标明文件作用的权限。

控制器文件的命名

所有的控制器存放于:controller目录下,但是名字为“控制器名_controller.php”,同时类名为“控制器名Controller”。
我们还是来看个例子,例如default这个控制器,类名为“defaultController”,文件名为“default_controller.php”。
snakezero protosscontrollerdefault.png

但是我们注意到这里的“Controller_Abstract”,它是控制器,所以它的命名仍然使用常规命名,而它的文件,也是存在controller目录下,命名为abstract.php。
关于控制器的更多详情请参阅控制器


视图文件的命名

在Protoss的应用程序中视图文件是自动载入的,如果按照本命名规则建立相应文件,则会自动载入使用。
在templates文件下,建立对应的控制器名称的文件夹,如名为default的控制器则对应“default”文件夹。如果default控制器中有index方法,其相对应的模板文件则是index.php。全路径为“templates/default/index.php”。

关于视图的更多详情请参阅视图
  1. 原则上讲,类文件必需归于一个文件夹,如:class,lib之类的,这样才方便管理。