最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

Fleaphp框架使用规范

来源:动视网 责编:小OO 时间:2025-10-05 04:40:38
文档

Fleaphp框架使用规范

FleaPHP框架使用规范/***版权所有(C)2008英才网联(北京)科技有限公司*作者:英才网联技术部*时间:2008-5-23*/FleaPHP框架使用规范2一.FleaPHP的MVC模式2二.Fleaphp的命名规范21)类的命名规则22)变量和常量命名规则3三.FleaPHP目录结构3四.MVC模式下的程序和代码41)项目入口程序Index.php42)控制器Controller53)MVC模式下各类代码划分54)变量的引用和传递65)开发模式与日志输出6五.数据库操作61)Tabl
推荐度:
导读FleaPHP框架使用规范/***版权所有(C)2008英才网联(北京)科技有限公司*作者:英才网联技术部*时间:2008-5-23*/FleaPHP框架使用规范2一.FleaPHP的MVC模式2二.Fleaphp的命名规范21)类的命名规则22)变量和常量命名规则3三.FleaPHP目录结构3四.MVC模式下的程序和代码41)项目入口程序Index.php42)控制器Controller53)MVC模式下各类代码划分54)变量的引用和传递65)开发模式与日志输出6五.数据库操作61)Tabl
FleaPHP框架使用规范

/ **

* 版权所有 (C) 2008 英才网联(北京)科技有限公司

* 作者:英才网联 技术部

* 时间:2008-5-23

*/

FleaPHP框架使用规范    2

一.FleaPHP 的MVC 模式    2

二.Fleaphp 的命名规范    2

1) 类的命名规则    2

2) 变量和常量命名规则    3

三.FleaPHP目录结构    3

四.MVC 模式下的程序和代码    4

1) 项目入口程序Index.php    4

2) 控制器Controller    5

3) MVC 模式下各类代码划分    5

4) 变量的引用和传递    6

5) 开发模式与日志输出    6

五.数据库操作    6

1) Table Data Gateway(表数据入口类)    6

2) 数据表关联    6

3) 多个数据库连接    7

六.其他框架插件    7

1) Smarty模板的使用    7

2) Ajax的使用    8

FleaPHP框架使用规范

一.FleaPHP 的MVC 模式

FleaPHP 采用的是Passive(被动)MVC 模式。在 Passive MVC 模式中,Model(模型)完全不知道自己身处于 MVC 结构之中。换句话说,Model 就是一个普通的对象,与 MVC 模式里面的其他组成部分完全没有关联。具体而言,MVC 模式涉及到下列三类对象:

M 代表 Model,即模型,用于封装与业务逻辑有关的代码和数据。例如对订单的各种计算。 

V 代表 View,即视图,用于呈现内容给用户(也就是将程序运行的结果返回给浏览器显示)。例如商品列表页面、后台登录页面。 

C 代表 Controller,即控制器, 用于接收用户输入(通过浏览器发起的请求),然后调用模型(Model)对输入数据进行处理并获得处理结果。最后将结果传递到视图(View),从而让用 户能够看到自己操作的结果。例如用户点击删除文章按钮后,控制器调用操作文章的模型,删除掉指定文章,最后通过视图显示成功删除文章的提示信息。 

经过这样简单的分离,我们就把应用程序操作数据的代码(绝大部分 Web 应用程序都是对数据进行操作)和处理用户输入输出的代码分离开来了。

这种分离有许多好处:

1.清晰的将应用程序分隔为的部分; 

2.业务逻辑代码能够很方便的在多处重复使用; 

3.方便开发人员分工协作; 

4.如果需要,可以方便开发人员对应用程序各个部分的代码进行测试。 

二.Fleaphp 的命名规范

1) 类的命名规则

所有 FleaPHP 自带的类,都以 FLEA_ 开头。然后根据用途命名。例如 FLEA_Controller_Action、FLEA_Helper_ImgCode。然后将类名字中的“_”替换为目录分隔符,就是这个类的定义文件所在位置。

举例:

FLEA_Controller_Action 类,保存文件为 FLEA/Controller/Action.php 

FLEA_Db_TableDataGateway 类,保存文件为 FLEA/Db/TableDataGateway.php

这种命名规则和目录结构的优缺点如下:

1.避免命名冲突 

2.根据类名字就能找到文件存放位置 

3.应用程序中可以使用 FleaPHP 的 FLEA::import()、FLEA::loadClass() 方法方便的载入类定义文件,也可以使用FLEA:: loadFile() 方法载入指定的文件。

4.如果使用 PHP5,可以很方便的用 __autoload() 来自动载入需要的类定义 

2) 变量和常量命名规则

全局变量和常量 

全局变量和常量都使用全大写,以“_”分隔。例如 $GLOBALS['CLASS_PATH'] 和 FLEA_DIR。不过 FleaPHP 中尽量避免了使用全局变量和常量,因此一般来说不会和应用程序产生冲突。

临时变量 

函数、类方法中使用的变量都是临时变量,命名规则是第一个单词小写,后续的单词第一个字母大写。例如 $requestFilters、$dispatcherClass 等。

模版变量 

之所以要把模版变量单独列出来, 是因为不同的模版引擎对变量名有不同的规范。从我个人来说,我倾向于模版变量使用全小写单词,并以“_”分隔,例如 $latest_products_list。这样在程序里面一眼就能看出哪些变量是用于模版的。

    

三.FleaPHP目录结构

以0.105服务器为例

|--FleaFrame     框架和插件程序目录

    |--FLEA          FleaPHP框架主程序目录

    |--Smarty        模板程序目录

      …             其他公用插件和类库

|--interviewing  面试项目程序目录

    |--APP           项目主程序目录

        |--Config         项目的配置文件目录

            |--DSN.php                数据库链接数组

            |--DEFAULT_APP_INF.php    系统默认配置参数数组

              …                      其他配置参数文件

        |--Controller     控制器目录

            |--Default.php            默认控制器

            |--Interview.php          面试信息控制器

              …

        |--Model          模型目录

            |--Interview.php          面试信息模型

            |--PublicFunction.php     模型需要调用的公共函数

              …

        |--Table          数据表目录

            |--Interview.php          面试信息模块

                …

        |--common        项目内公用文件目录

              …

        |--smarty_root    模板目录

            |--cache                    模板缓存目录

            |--templates              模板文件目录

            |--templates_c            模板编译目录

|--css        项目中的样式文件目录

|--images     项目中的图片文件目录

|--js         项目中的js文件目录

|--index.php  项目程序入口

目录结构说明:

    FleaFrame是框架程序目录,所有项目需要使用该目录建立框架项目。包括FleaPHP主框架程序、Smarty模板或其他公用插件和类库

    每个项目需要创建自己目录,用于保存该项目自己专用的文件和目录。例如 interviewing是面试系统使用的目录。

在interviewing目录下,index.php是面试系统的程序入口,css,images,js 目录放置到与index.php 并列的目录下。

APP目录包含是MVC 模式对应的各类文件目录。

Config目录内是项目的配置文件,

Controller 是控制器目,

Model是模型目录,包括模型需要调用的公用函数文件

Table是数据表目录,

common项目内公用文件目录,

smarty_root是 smarty模板目录。

四.MVC 模式下的程序和代码

1) 项目入口程序Index.php

index.php 是应用程序的入口文件,负责定义一些应用程序必须的常量,并载入 FleaPHP 框架,然后执行 run() 函数。

项目入口程序Index.php 部分代码说明:

/**

* 访问 http://www10.800hr.com/proxy/interview/ 时,服务器进行了代理转换,

* 访问路径发生变化,需要重新设置$_SERVER['SCRIPT_NAME'],保证页面能正常访问

*/

$_SERVER['SCRIPT_NAME'] = '/proxy/interview/index.php';

/**

 * 当 DEPLOY_MODE 为 false 时,FleaPHP 使用调试模式运行,

 * 应用程序开发结束后,应该将 DEPLOY_MODE 改为 true。

 */

define('DEPLOY_MODE', false);

// APP_DIR 常量定义为应用程序代码所在的父目录

define('APP_DIR', dirname(__FILE__) . DS . 'APP');

// TODO: 修改 DSN.php 内容为您所使用的数据库

FLEA::loadAppInf(APP_DIR . '/Config/DSN.php');

// 导入应用程序对象搜索路径

FLEA::import(APP_DIR);

// 启动 MVC 模式,并运行应用程序

FLEA::runMVC();

2) 控制器Controller

在 FleaPHP 应用程序中,应用程序包含多个控制器。每一个控制器又提供一组控制器动作。每一个浏览器发送给 FleaPHP 应用程序的请求,都是由一个动作来处理的。将一组相关的动作集中到一起,就形成了一个控制器。要合理的定义控制器,避免一个控制器内的动作过于复杂。

尽可能通过配置参数来指定默认使用哪个控制器,而不是将 “Default”作为控制器名称使用。配置参数如下:

'defaultController' => 'interview',

'defaultAction' => 'index',

3) MVC 模式下各类代码划分

要合理的区分MVC 模式下各类代码,将不同代码放置对应的目录下。

Controller控制器 按不同控制器和动作名接受用户的请求的数据,再按照action动作名 将请求数据交给对应Model模型 来的处理;

Model模型 进行数据检查、数据处理、查询条件生成等的工作。如果有数据库操作,就将处理后的数据交给Table数据表 进行处理;

Table数据表 只进行与数据库交互的操作,如添加、修改、删除、查询。然后将查询结果返回给Model模型;

Model模型 对Table数据表 返回的数据经过处理后,再返回给Controller控制器;

Controller控制器 将Model模型 返回的数据交给smarty模板,再让模板解释后显示出来。

代码进行有效划分后,有助于清晰流程,提高代码的可阅读性。

4) 变量的引用和传递

    在MVC 模式下,除系统默认的全局变量外,其它变量要以参数的方式在各个类和函数间传递。对于$_GET或$_POST数据,尽可能直接使用原数组,不要将$_GET或$_POST里的各个变量都转换成单个变量使用,避免变量名过多,引发冲突。对于非富文本编辑器(如:fckeditor)编辑的$_GET或$_POST数据,要先通过htmlspecialchars()进行 html转码,再保存到数据库。

    在系统配置文件内的定义的变量,可通过FLEA::getAppInf('dbDSN')的方式获得。“dbDSN”为变量名。

5) 开发模式与日志输出

在入口程序Index.php 内修改常量定义开启开发模式:

define('DEPLOY_MODE', true);

    在开发模式下,系统默认打开的日志输出。输出目录默认在FleaFrame/_Cache目录下。可以通过系统配置文件参数修改路径。设置如下:

'internalCacheDir' => APP_DIR . '/_Cache',

五.数据库操作

1) Table Data Gateway(表数据入口类)

FleaPHP 默认使用 Table Data Gateway(表数据入口类)来提供数据库访问服务,有出色的自动化CRUD(Create, Read, Update, Delete)操作能力。

    对于简单CRUD操作可以直接使用 表数据入口类 里面的create()、update()、find()、remove()、findAll()等成员函数。

2) 数据表关联

    FleaPHP 支持四种类型的数据表关联,分别是:

HAS_ONE: 当前表的每一条记录都拥有最多一条(0–1)关联记录 

HAS_MANY: 当前表的每一条记录都拥有多条(0-n)关联记录 

MANY_TO_MANY: 当前表的每一条记录都和其他表的多条(0-n)记录关联 

BELONGS_TO: 当前表的每一条记录都属于另一个表的某条记录 

对于一般查询可以使用这四种数据表关联进行查询并输出。 

对于复杂的多表联合查询可以 使用手写SQL查询条件语句后调用findAll()、或者手写完整SQL语句后调用 findBySql() 的方式进行。

findBySql()使用 sql 语句获取记录,将不会处理关联数据表。

3) 多个数据库连接

    如果要分别连接不同的数据库,可以在Table数据表 模块的构造函数编写以写下代码

        …

$params['dbDSN'] = FLEA::getAppInf('dbDSN');

$this -> FLEA_Db_TableDataGateway($params);

        …

    注: 'dbDSN' 是在系统配置文件中定义数据库连接数组

六.其他框架插件

    FleaPHP集成了许多插件和类库,例如smarty模板,ajax(jquery.js)和助手Helper等,充分利用这些功能来提高开发效率。

    在项目中引用了新的插件,需要根据新插件的公用程度分别放置。仅自用的插件放置在应用项目的目录下。模型需要调用函数文件放置到APP/Model目录下,项目内公用文件放置到APP/common目录下)。通用性强、能被大多其他项目使用的插件应放置在 “FleaFrame”目录下,与FLEA目录并列。

1) Smarty模板的使用

    要使用smarty模板 需要在系统配置文件中设置以下参数:

'view' => 'FLEA_View_Smarty',

'viewConfig' => array(

'smartyDir' => '/var/webroot/FleaFrame/Smarty',

'template_dir' => APP_DIR . '/smarty_root/templates',

'compile_dir' => APP_DIR . '/smarty_root/templates_c',

'config_dir' => APP_DIR . '/smarty_root/configs',

'cache_dir' => APP_DIR . '/smarty_root/cache',

'left_delimiter' => '<%',

'right_delimiter' => '%>',

'caching' => 0 //禁用缓存

    ),

    在控制器中使用smarty模板有两种方式, 详细使用方式参见FleaPHP框架自带Smarty样例。

    在每个模板的文件的第一行添加一下代码。避免模板被外部直接访问。

对于简单标签如 类标签,直接使用标准html标签,不要是使用框架引入的新解释标签。这有助于不同页面器显示页面效果。

如将模板标签:

<%webcontrol type='textbox' name='user_name' value=$ user_name size='15' %>

改为标准html标签:

size='15' >

2) Ajax的使用

FleaPHP框架通过FLEA_Ajax类 和jquery.js 文件共同实现Ajax的操作。

    如要使用jquery.js 时,需要将jquery.jsjs文件放置到可访问的js路径下。FLEAPHP系统自带的jquery.js 使用两个文件合并的,分别是:

jquery.js   (来源:http://jquery.com/ )

jquery.form.js (来源:http://malsup.com/jquery/form/ 属于 jQuery Form Plugin )

jquery.form.js 不是必需的,只有在使用Ajax进行表单提交提交时需要。

    详细使用方式参见FleaPHP框架自带Ajax样例。

文档

Fleaphp框架使用规范

FleaPHP框架使用规范/***版权所有(C)2008英才网联(北京)科技有限公司*作者:英才网联技术部*时间:2008-5-23*/FleaPHP框架使用规范2一.FleaPHP的MVC模式2二.Fleaphp的命名规范21)类的命名规则22)变量和常量命名规则3三.FleaPHP目录结构3四.MVC模式下的程序和代码41)项目入口程序Index.php42)控制器Controller53)MVC模式下各类代码划分54)变量的引用和传递65)开发模式与日志输出6五.数据库操作61)Tabl
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top