Fleaphp 的命名规则和目录结构初看上去比较复杂,但习惯以后,你会发现这种命名规则带来许多好处。因此像 Zend Framework 也是采用同样的做法。
当然,FleaPHP 对于应用程序的命名规则和目录结构没有强制性要求。只不过采用一致的命名规则和目录结构,可以方便对应用程序维护。同时 FleaPHP 应用程序开发者之间也可以更容易的进行协作。
全局函数的命名规则
全局函数的命名规则是用“_”分隔全小写的单词。例如 get_cache()、echo_h()。同时,函数的名字采用“动词+宾语”的形式。例如 write(动词)_cache(宾语)。
不过有些全局函数为了和 PHP 中已有的类似函数保持一致,采用了不同的命名方式(顺便抱怨一下,PHP 自身的全局函数命名比较混乱,各种形式的都有)。
类的命名规则
所有 FleaPHP 自带的类,都以 FLEA_ 开头。然后根据用途命名。例如 FLEA_Controller_Action、FLEA_Helper_ImgCode。然后将类名字中的“_”替换为目录分隔符,就是这个类的定义文件所在位置。
举例:
FLEA_Controller_Action 类,保存文件为 FLEA/Controller/Action.php
FLEA_Db_TableDataGateway 类,保存文件为 FLEA/Db/TableDataGateway.php
这种命名规则和目录结构的优缺点如下:
优点:
- 避免命名冲突
- 根据类名字就能找到文件存放位置
- 应用程序中可以使用 FleaPHP 的 import()、load_class() 函数方便的载入类定义文件
- 如果使用 PHP5,可以很方便的用 __autoload() 来自动载入需要的类定义:
<?phpfunction __autoload($className) { load_class($className);}?>
缺点:
- 类名字较长,不便于输入,例如 FLEA_Com_RBAC_UsersManager
- 也许和现有习惯不同,需要时间来适应
对于第一个缺点,使用 Zend Development Environment 或者 Eclipse 这样的 IDE 可以缓解。这些 IDE 提供强大的输入自动完成功能,通常输入类名字的开头几个字母,就会显示候选列表让开发者选择。
变量和常量命名
在 FleaPHP 中,变量分为全局变量、临时变量和模版变量三类。
- 全局变量和常量
全局变量和常量都使用全大写,以“_”分隔。例如
$GLOBALS['CLASS_PATH']
和FLEA_DIR
。不过 FleaPHP 中尽量避免了使用全局变量和常量,因此一般来说不会和应用程序产生冲突。 - 临时变量
函数、类方法中使用的变量都是临时变量,命名规则是第一个单词小写,后续的单词第一个字母大写。例如
$requestFilters
、$dispatcherClass
等。 - 模版变量
之所以要把模版变量单独列出来,是因为不同的模版引擎对变量名有不同的规范。从我个人来说,我倾向于模版变量使用全小写单词,并以“_”分隔,例如
$latest_products_list
。这样在程序里面一眼就能看出哪些变量是用于模版的。
FleaPHP 的目录结构
一个典型的 FleaPHP 应用程序具有如下的目录结构: