- 浏览: 442739 次
- 性别:
- 来自: 茂名
文章分类
最新评论
-
zenmshuo:
不错不错,总结的很详细,不知道这个控件和FlexGrid比起来 ...
jQuery EasyUI教程之datagrid应用(三) -
我是你们的爹:
文章里太多错误了,容易误导新手
jQuery EasyUI教程之datagrid应用(三) -
我是你们的爹:
...
jQuery EasyUI教程之datagrid应用(一) -
zhehen123:
你傻啊,json_decode后面跟一个参数就可以转成普通数组 ...
如何将PHP对象数组转换成普通数组? -
lai3221:
hegz,为什么做了没有任何效果呢?
jQuery EasyUI教程之datagrid应用(二)
论坛贴:http://qeephp.com/bbs/thread-10922-1-1.html
贴记:
无所谓贴记,只是开篇明义罢了。大家看到这个东西,不禁会问,“大哥啊,你这篇东西如果在2008年,不,2007年初就贴出来还说的过去,现在贴出来,是不是太晚了?还有什么意义呢?”。呵呵......,晚是晚了点,意义还是有的。虽然FleapHP的fans现在是越来越少了,但正因为其人少,我们才需要坚持,才需要互相打气。孔子说过,“仁,吾固守也!”。在此,我要说:“FleapHP,吾固守也!”——FleaPHP也是我所一直坚持的,你们呢?
--------x-------x-------x-------x-------x-----x----> 美丽分隔线 <------x-------x------x------x------x--------x-------x--------x-------
在 FleaPHP 应用程序使用 MVC 模式时,应用程序的所有功能都通过一个单一的文件来调用。这种通过单一文件来执行所有功能的应用程序,称为单一入口应用程序。
该文件通常放在程序主目录下。其代码如下所示:
<?php /** * 入口文件 * * @file:index.php * @author:hegz * @update:2009/10/27 */ define('__ROOT__', dirname(__FILE__)); // 定义网站根目录 define('DEPLOY_MODE', true); //部署模式时启用 //define('NO_LEGACY_FLEAPHP', true); //取消与旧版FleaPHP兼容,现在作用不大 // 装载 FleaPHP 框架文件 require(__ROOT__ . '/lib/FLEA/FLEA.php'); /** * 装载配置文件 */ FLEA::loadAppInf(__ROOT__ . DS . 'public/Config/COMMON_INF.php'); // 自定义环境配置文件 FLEA::loadAppInf(__ROOT__ . DS . 'public/Config/DSN.php'); // 数据库链接参数配置文件 FLEA::loadAppInf(__ROOT__ . DS . 'APP/Config/APP_INF.php'); // 自定义应用程序配置文件 /** * 设定运行目录 */ FLEA::import(__ROOT__); FLEA::import(__ROOT__ . DS . 'APP'); FLEA::import(__ROOT__ . DS . 'public'); //dump($GLOBALS['__FLEA_CORE__']['CLASS_PATH']); // 调试程序路径 //exit; // 以 MVC 模式运行系统 FLEA::runMVC(); ?>
注意:上面代码中的 DS 为FleaPHP框架文件中定义的路径分隔符,是一个常量,Windows下为“\”,Linux下为“/”。
代码行解析
第十行:
define('__ROOT__', dirname(__FILE__));
定义网站根目录的常量,其结果可能像下面所示:
Linux下可能为:
第十一行:
define('DEPLOY_MODE', true);
程序部署在实际生产环境下使用时启用,这时程序将自动调用FleaPHP框架下的FLEA/FLEA/Config/DEPLOY_MODE_CONFIG.php配置文件初始化程序执行环境。
在开发环境下,需要详细显示一些出错信息,以方便调试,可以将true改为false,或直接屏蔽掉该语句即可。如下面所示:
define('DEPLOY_MODE', false);
或直接屏蔽:
//define('DEPLOY_MODE', true);
此时,程序将自动调用FleaPHP框架下的FLEA/FLEA/Config/DEBUG_MODE_CONFIG.php配置文件初始化程序执行环境。有时间的话,大家可以比较一下这两个文件里面的配置参数的异同。
第十五行:
require(__ROOT__ . '/lib/FLEA/FLEA.php');
这个很好明白,就是装载FleaPHP框架文件FLEA.php,在框架文件装载过程中,将根据DEPLOY_MODE的参数值来装载默认配置文件。
第二十~二十二行:
FLEA::loadAppInf(__ROOT__ . DS . 'public/Config/COMMON_INF.php'); FLEA::loadAppInf(__ROOT__ . DS . 'public/Config/DSN.php'); FLEA::loadAppInf(__ROOT__ . DS . 'APP/Config/APP_INF.php');
以上三个语句为装载一些自定义的配置文件,程序运行后将用自定义配置文件中的参数覆盖默认的全局配置参数。
其中:
COMMON_INF.php文件是一些公用的环境配置参数,如下所示:
<?php return array( 'controllerAccessor' => 'ctl', 'defaultController' => 'Default', 'actionAccessor' => 'act', 'urlLowerChar' => false, //'dispatcher' => 'FLEA_Dispatcher_Auth', /** * 调度器调度失败(例如控制器或控制器方法不存在)后,要调用的自定义处理程序 */ 'dispatcherFailedCallback' => 'onDispatcherFailedCallback', //'dispatcher' = 'FLEA_Dispatcher_Simple'时启用 //'dispatcherAuthFailedCallback' => 'onAuthFailedCallback', //'dispatcher' = 'FLEA_Dispatcher_Auth'时启用 /** * 指示在生成 url 时,是否总是使用应用程序入口文件名,仅限 URL_STANDARD 模式 * * 如果该设置为 false,则生成的 url 类似: * * http://www.example.com/?controller=xxx&action=yyy */ 'urlAlwaysUseBootstrap' => false, /** * 指示在生成 url 时,是否总是使用完整的控制器名和动作名 * * 如果该设置为 false,则默认的控制器和动作名不会出现在 url 中 */ 'urlAlwaysUseAccessor' => false, 'responseCharset' => 'gb2312', 'defaultLanguage' => 'chinese-gb2312', 'databaseCharset' => 'gb2312', 'RBACSessionKey' => 'RBAC_MMFS2009', //'autoResponseHeader' => false, 'internalCacheDir' => __ROOT__ . DS . '_cache', /** * WebControls 扩展控件的保存目录 */ 'webControlsExtendsDir' => __ROOT__ . DS . 'public/WebControls', /** * 指示是否启用日志服务,设为true时启用 */ 'logEnabled' => false, ); ?>
DSN.php为数据库链接参数定义文件,如下所示:
<?php /** * 数据库连接参数 */ return array( 'dbDSN' => array( 'driver' => 'mysql', 'host' => 'localhost', 'login' => 'mmfs2009', 'password' => '×××××××', 'database' => 'mmfs2009', ) ); ?>
APP_INF.php为自定义前台程序运行参数文件,如下所示:
<?php return array( 'dispatcher' => 'FLEA_Dispatcher_Auth', /** * 指示 RBAC 组件要使用的默认 ACT 文件(使用单个ACT文件) */ 'defaultControllerACTFile' => __ROOT__ . DS . 'APP/Controller/App.act.php', 'view' => 'FLEA_View_Smarty', 'viewConfig' => array( 'smartyDir' => __ROOT__ . DS . 'lib/Smarty', 'template_dir' => __ROOT__ . DS . 'APP/Templates', 'compile_dir' => __ROOT__ . DS . '_cache/1', 'left_delimiter' => '{{', 'right_delimiter' => '}}', ), ); ?>
这三个配置文件为什么不合并到一个配置文件中呢?这个是可以的,但在有些场合下使用起来不太方便,也不方便修改。一般来说,公共配置参数配置好后很少改动,但数据库参数链接参数在部署到生产环境中时,很可能需要修改的。还有,考虑到前台程序与后台程序拆分成两个目录的情况,如果后台也有一个入口文件的话,很多参数也发生了变化,比如路径参数,使得前后台程序都需要有各自的一套运行参数,这时将配置文件拆分就很有好处了。
第二十七~二十九行:
FLEA::import(__ROOT__); FLEA::import(__ROOT__ . DS . 'APP'); FLEA::import(__ROOT__ . DS . 'public');
以上语句用来设定程序的运行目录。执行程序后,将把路径数据放入全局数组$GLOBALS['__FLEA_CORE__']['CLASS_PATH']中存放,以方便后续使用。
import()在框架文件中定义,这是一个静态方法。其代码为:
/** * 导入文件搜索路径 * * FLEA::loadClass()、FLEA::getSingleton() 会在搜索路径中查找指定名字的类定义文件。 * 因此需要调用 FLEA::import() 将存放类定义文件的目录添加到搜索路径中。 * 但是,不应该将类文件所在目录直接添加到搜索路径中,而是根据类的命名来决定要添加哪一个目录。 * * 例如类名称是 Table_Posts,而实际的文件是 ./APP/Table/Posts.php。 * 那么应该添加的目录就是 ./APP,而不是 ./APP/Table 。 * * example: * <code> * FLEA::import(APP_DIR . '/LIBS'); * </code> * * @param string $dir */ function import($dir) { if (array_search($dir, $GLOBALS[G_FLEA_VAR]['CLASS_PATH'], true)) { return; } if (DIRECTORY_SEPARATOR == '/') { $dir = str_replace('\\', DIRECTORY_SEPARATOR, $dir); } else { $dir = str_replace('/', DIRECTORY_SEPARATOR, $dir); } $GLOBALS[G_FLEA_VAR]['CLASS_PATH'][] = $dir; }
现在来看看,执行了三个FLEA::import()语句后,$GLOBALS['__FLEA_CORE__']['CLASS_PATH']里有什么
东西。
去掉index.php文件中下面语句的两个反斜线,如下面所示:
//dump($GLOBALS['__FLEA_CORE__']['CLASS_PATH']); // 调试程序路径 //exit;
去掉双斜线:
dump($GLOBALS['__FLEA_CORE__']['CLASS_PATH']); // 调试程序路径 exit;
执行程序,结果显示如下:
(
[0] => e:\apmxe4\htdocs\mmfs2010\lib\FLEA
[1] => e:\apmxe4\htdocs\mmfs2010
[2] => e:\apmxe4\htdocs\mmfs2010\APP
[3] => e:\apmxe4\htdocs\mmfs2010\public
)
说明一下:
mmfs2010 -- 程序主目录,
lib\FLEA -- FleaPHP框架文件存放目录
APP -- 前台应用程序目录,里面含有Config、Controller、Templates子目录
public -- 公共文件存放目录,里面含有Config、Model、Table、WebControls等子目录
第三十五行:
FLEA::runMVC();
这是入口文件中的最后一个语句,以 MVC 模式运行系统。如果是以非 MVC 模式运行系统,则执行
FLEA::init();
命令。
FLEA::init() 主要完成下列工作:
安装 FleaPHP 异常的处理例程
根据应用程序设置设置决定是否载入日志服务
检查 php.ini 中 magic_quotes 设置是否为 on,并将被 PHP 自动转义后的数据撤销转义
根据应用程序设置的 urlMode 决定是否对 URL 进行处理
根据应用程序设置 requestFilters 决定运行哪些输入过滤器
根据应用程序设置 autoLoad 决定自动载入哪些文件
根据应用程序设置 sessionProvider 和 autoSessionStart 决定使用哪一个 session 服务
根据应用程序设置 responseCharset 和 requestCharset 定义常量 RESPONSE_CHARSET 和 DATABASE_CHARSET
根据应用程序设置 multiLangaugeSupport 决定是否载入多语言支持
根据应用程序设置 autoResponseHeader 决定是否自动输出 HTTP HEADER 信息
这些初始化工作对于应用程序的绝大部分来说都是必须。因此务必记得在 require('FLEA.php') 后要调用 FLEA::init()。
FLEA::runMVC()的作用:
如果要使用 FleaPHP 的 MVC 模式。那么在载入 FLEA.php 后,调用 FLEA::runMVC() 即可启动 MVC 模式。
在 MVC 模式启动后,FleaPHP 会根据 URL 地址中包含的控制器名称和控制器动作名称,执行开发者编写的控制器代码。
其实,FLEA::runMVC()内部也调用了FLEA::init()方法。
- FleaPHP_核心.zip (20.6 KB)
- 描述: FleaPHP核心文档手册
- 下载次数: 16
发表评论
-
FleaPHP分页方法讲解
2010-05-22 15:42 1608本来这篇文章是不想写的,要写早几年就应该写了,为甚么突然想起要 ... -
在xheditor编辑器的WYSWYG编辑模式下增加插入代码功能
2010-05-18 13:56 3143xhEditor HTML编辑器为国人所开发,是一个基于jQu ... -
FleaPHP的用户权限管理
2010-05-10 00:59 1991有些刚接触FleaPHP的童靴对于用户权限管理有些摸不着头脑, ... -
类javaeye博客我的收藏页面中分类标签输入功能的实现
2010-05-09 01:08 2617javaeye博客的收藏管理页面,收藏分类是通过下拉列表选择来 ... -
FleaPHP全部版本源代码下载
2010-04-21 19:40 980下载地址: http://old.fleaphp.or ... -
FLEA_Rbac_UsersManager 类中的fetchRoles()方法的bug修正
2010-04-09 16:43 984影响版本:1.7.1524及早期版本。 原有代码在 P ... -
FleaPHP 1.0.70 开发进度汇报专贴
2010-04-06 22:09 1480这个帖子虽然比较旧,但仔细找找,你很可能挖到金矿也不一定。 ... -
FleaPHP与Fpdf结合,创建PDF文档
2010-04-06 20:59 2330应本地交警部门的请求,开发 了一个利用交警部门导出的缴款 ... -
FleaPHP数据关联
2010-03-30 21:17 1139$belongsTo 定义从属关 ... -
FleaPHP中如何捕获异常?
2010-03-30 00:09 864兼容PHP4: __TRY(); $newsCont ... -
FleaPHP页面数据缓存
2010-03-29 23:58 1092dualface : FleaPHP 的视图缓存论坛里 ... -
直接利用findAll进行分页查询(限定结果集查询)
2010-03-29 23:51 1739findAll是 FLEA_Db_TableDataGatew ... -
FLEA/Helper/Array.php中array_to_tree的用法
2010-03-29 23:19 1976FLEA/Helper/Array.php中的array_to ...
相关推荐
启动应用时,你需要配置Web服务器(如Apache或Nginx)以指向Fleaphp的入口文件。 通过这个详尽的中文手册,读者将能够逐步学习如何利用Fleaphp进行开发,从搭建环境、创建第一个控制器到构建复杂的业务逻辑。手册中...
7. **缓存机制**:为了提高应用性能,Fleaphp内置了缓存系统,支持文件、内存(如APC、Memcached、Redis)等多种缓存方式。通过缓存,可以有效减少对数据库的访问,提升网站响应速度。 8. **错误处理**:Fleaphp有...
作为一款优秀的框架,Fleaphp旨在提供高效、简洁且易于上手的开发工具,帮助开发者快速构建Web应用。下面将详细介绍Fleaphp的主要特点、核心组件以及如何使用它进行开发。 1. **主要特点** - **轻量级**:Fleaphp...
了解框架的基本目录结构和各部分的作用至关重要,例如`app`目录包含应用逻辑,`config`存储配置文件,`public`作为前端资源的入口等。 2. **路由系统**:Fleaphp的路由机制允许开发者灵活定义URL到控制器和方法的...
8. **自动化工具**:为了提升开发效率,Fleaphp可能带有脚手架或命令行工具,用于快速生成控制器、模型、视图等基础文件结构。 9. **第三方库集成**:像许多PHP框架一样,Fleaphp可能集成了如Smarty、Twig等模板...
7. **缓存机制**:为了提高性能,FleaPHP支持多种缓存策略,如文件缓存、内存缓存(如APC),可以有效减少数据库访问。 8. **安全防护**:框架内置了一些安全措施,如防止SQL注入、XSS攻击,确保应用的安全性。 9....
- 应用程序入口文件配置。 - 命名规范和目录结构介绍。 - 应用程序设置详解。 - 数据库访问方法。 2. **MVC模式篇** - MVC模式基础理论。 - FleaPHP的MVC模式特色分析。 - 构建基本的MVC应用程序步骤。 3. ...
fleaphp.chm手册
Fleaphp支持模板引擎,例如Smarty或Twig,也可以直接使用PHP编写视图文件。视图文件通常位于`views`目录下,与控制器关联,用于渲染数据并返回给用户。 5. **控制器(Controller)** 控制器作为模型和视图的桥梁,...
fleaphp框架,国产最好php开发框架
在apidoc.chm文件中,您可以找到FleaPHP的API文档,包括各个类、方法和函数的详细说明。这份文档是学习和使用FleaPHP的关键资源,它将指导您如何有效地利用框架的功能进行开发。 总的来说,FleaPHP是一个全面的PHP...
FleaPHP应用程序通常采用单一入口文件的方式启动。这种方式有助于集中管理应用程序的启动逻辑,并确保所有请求都经过相同的初始化过程。 - **单一入口应用程序**:大多数FleaPHP应用程序使用单一入口文件(通常是`...
【fleaphp AJAX Login 实例详解】 在Web开发中,用户登录是常见的功能,而AJAX(Asynchronous JavaScript and XML)技术的应用使得用户交互更加流畅,无需刷新页面即可完成登录操作。本实例将深入探讨如何使用...
FleaPHP chm文档,简单实例,框架流程介绍
在FleaPHP开源应用程序开发框架中,有几个关键的系统方法,它们是开发高效Web应用的基础。下面我们将详细探讨这些方法: 1. **FLEA::initWebControls()**: 这个函数用于初始化WebControls,它返回一个`FLEA_...