您的位置:首页 > 编程语言 > PHP开发

FleaPHP 开发指南 - 5. 应用程序设置

2007-12-28 20:31 513 查看
FleaPHP 是一个具有高度灵活性的框架。开发者可以用不同的设置来调整 FleaPHP 的工作方式。这些设置统一保存在名为“应用程序设置”的数据源中。
实际上,除了 FleaPHP 框架本身,应用程序也可以使用“应用程序设置”来保存应用程序运行时需要的各种设置。
FleaPHP 的应用程序设置有一个默认配置文件,保存在
FLEA/Config/Default_APP_INF.php
中。应用程序可以在入口文件(例如
index.php
)中修改这些设置,以便调整 FleaPHP 的工作方式。

如何使用应用程序设置?

当 FleaPHP 框架初始化时,默认的应用程序设置文件(
Default_APP_INF.php
)会被载入。如果应用程序要指定设置,推荐的做法有下列几种:

创建应用程序的私有设置文件

当需要指定多个应用程序设置时,推荐使用该方法。具体的做法非常简单,只需要定义类似如下的文件即可(假设下面的内容保存到文件
APP/Config/MY_APP_INF.php
)。
 'UserCenter',    'urlLowerChar'      => false,    'dispatcher'        => 'FLEA_Dispatcher_Auth',    'dbDSN'     => array(        'driver'        => 'mysql',        'host'          => 'localhost',        'login'         => 'root',        'password'      =>空字符串,        'database'      => 'test',    ),);?>
然后在应用程序的入口文件
index.php
中调用
run()
函数的代码前,增加一行
register_app_inf('APP/Config/MY_APP_INF.php')
即可。例如:

直接在入口文件中指定设置

对于少量的设置,可以在入口文件中直接用
set_app_inf()
函数指定。例如:


不管采用哪一种方式,重要的都是必须在
run()
之前就指定好应用程序设置。


默认的应用程序设置

默认的应用程序设置提供了符合常见应用程序运行需要的设置。下面分类列出这些设置的名字和详细说明。

核心配置

namespace 应用程序的默认名字空间,默认值为空字符串 这个设置会影响到应用程序所有类的名称定义。例如
namespace
设置为
FOO
时,应用程序所有控制器、模型的类名字都要加上前缀
FOO_
。变成诸如
FOO_Controller_Default
FOO_Model_News
等。
为了让你的代码能够更容易的在其他应用程序中复用,最好将 namespace 设置为空字符串。

controllerAccessor 指示控制器的 URL 参数名,默认值为
controller
这个设置指定在 URL 查询参数中,用什么名字的参数指定控制器名字。例如 controllerAccessor 设置为 “
ctl
” 时,就必须用
index.php?ctl=MyController
来指定要调用的控制器。

defaultController 指示默认控制器的名字,默认值为
Default
url
参数中没有指定要调用的控制器时,将依据 defaultController 的设置调用默认的控制器。

actionAccessordefaultAction,默认值分别为
action
index
这两个设置的作用和 controllerAccessordefaultController 类似。只不过用于指定控制器动作的参数名和默认动作名。

urlMode 指定 URL 分析和构造模式,默认值为
URL_STANDARD
URL 的分析和构造模式,目前支持三种,分别是:
URL_STANDARD
URL_PATHINFO
URL_REWRITE

URL_STANDARD
模式中,URL 参数采用采用标准的方式,例如
index.php?controller=MyController&action=MyAction&class_id=2&sort=1

关于
URL_PATHINFO
URL_REWRITE
的详细说明,请参考使用 PATHINFO 和 URL 重写

urlLowerChar 指示是否将
url
参数中包含的控制器名字和动作名字强制转为小写字符,默认值为
false
对于 Windows 系统来说,这个设置无关紧要。而对于 Linux/Unix 系统来说,这个设置会关系到控制器类定义文件的命名。
urlLowerChar
true
时,控制器名字会被转为小写字符,而该控制器的类名字除第一个字母为大写外,其他全为小写。例如控制器名为
MyController
,实际的控制器类名称为
Mycontroller
,对应的类定义文件为
Mycontroller.php

urlLowerChar
false
时,控制器名字和控制器的类名字完全对应,例如控制器名为
QuickBenchmark
,实际的控制器类名称为
QuickBenchmark
,对应的类定义文件为
QuickBenchmark.php


controllerClassPrefix 指示控制器类名称前缀,默认值为
Controller_

actionMethodPrefixactionMethodSuffix 指示控制器动作的方法名要加上的前缀和后缀,默认值分别为
action
和空字符串 使用前缀和后缀可以,让控制器动作方法的名称和控制器中的其他方法区别开来。同时也可以避免无意中造成控制器内的私有方法被浏览器访问到。

dispatcher 指示应用程序要使用的 URL 调度器,默认值为
FLEA_Dispatcher_Simple
URL 调度器分析 URL 参数,决定要调用的控制器和控制器动作方法,最后调用控制器动作方法。默认的
FLEA_Dispatcher_Simple
是一个简单的调度器,仅仅是分析 URL 参数,然后完成调用工作。而更复杂的
FLEA_Dispatcher_Auth
则可以结合
FleaPHP
自带的
RBAC
(基于角色的访问控制)组件完成访问控制功能。
如果开发者自己编写了调度器,那么修改这个设置即可让应用程序使用开发者自己编写的调度器。

dispatcherFailedCallback 指示调度器调度失败后,要调用的处理程序,默认值为
null
如果希望应用程序处理调度失败的情况(例如控制器或控制器方法不存在),则需要覆盖这个设置。

internalCacheDir 指示 FleaPHP 内部及
cache
系列函数使用的缓存目录,默认值为
FLEA/_Cache/
目录
autoLoad 指示要自动载入的文件,默认载入
FLEA_Helper_Array.php
FLEA_Helper_Html.php
FLEA_Controller_Action.php
三个文件 这个设置必须是一个数组,数组中每一个项目为要自动载入的文件。

sessionProvider 指示要使用的
session
服务提供程序,默认值为
null
如果设置为
null
,则表示使用 PHP 自带的
session
服务。

autoSessionStart 指示是否自动起用
session
支持,默认值为
true
如果该设置为
true
,则每次 FleaPHP 框架初始化后都会自动执行
session_start()
函数。

requestFilters 指示使用哪些过滤器对 HTTP 请求进行过滤,默认值为空数组 和 autoLoad 设置类似,该设置必须为数组。但数组中每一个项目为要运行的过滤器类名字。过滤器按照出现在数组中的顺序初始化和运行。
每一个过滤器实际上都是一个脚本,无需要实现为一个类。可以参考
FLEA/Filter/
目录中的过滤器代码实现自己的过滤器。


FleaPHP 初始化时,会根据 PHP 运行环境设置和应用程序设置来决定是否自动运行
FLEA_Filter_MagicQuotes
FLEA_Filter_Uri
过滤器。因此开发者不应该在 [b]requestFilters
设置中调用这两个过滤器[/b]。

数据库相关

dbDSN 数据库连接设置,必须是数组,默认值为
null
dbDSN
是 FleaPHP 应用程序默认的数据库连接设置。正确指定该设置后,FleaPHP 会在应用程序需要访问数据库时尝试自动连接数据库。
dbDSN
数组中每个选项的含义如下:
driver 数据库驱动类型,例如
mysql
pgsql
等;
host 数据库所在服务器,通常为
localhost
127.0.0.1

port 连接数据库的端口,通常无需指定
login 连接时使用的用户名
password 连接时使用的密码
database 连接后要使用的数据库名
charset 字符集设置,如果没有设置该选项,则以应用程序设置 databaseCharset 为准
options 附加的连接选项
典型的 dbDSN 设置如下:

 'mysql',        'host'      => 'localhost',        'login'     => 'username',        'password'  => 'password',        'database'  => 'test_db',    ));?>
dbTDGAutoInit 指示构造表数据入口对象时,是否自动连接到数据库,默认值为
true
如果你希望自己控制数据库连接,那么可以将该设置指定为
false


dbTablePrefix 指示数据表的全局前缀,默认为空字符串,该设置会影响到所有数据表
dbValidationProvider 指示表数据入口要使用的数据验证服务对象,默认值为
FLEA_Helper_Validation

视图和模版相关

view 指示要使用的模板引擎,PHP 表示使用 PHP 语言本身作模板引擎,默认值为
PHP
目前 FleaPHP 提供了
FLEA_View_Simple
模版引擎和
FLEA_View_Smarty
模版引擎。其中
FLEA_View_Smarty
实际上是一个连接器,用于连接
Smarty
模版引擎。

viewConfig 指定模板引擎要使用的配置信息,默认为
null
不同模版引擎可能需要不同的配置,可以用
viewConfig
设置来指定。

I18N

有关 FleaPHP 对 I18N 支持的详细信息,请参考开发指南的相关章节。
responseCharset 指示 FleaPHP 输出内容的使用的编码,默认值为
gb2312
FleaPHP 核心本身并不假定要处理的内容采用什么编码,也不会自动将输入内容转换为输出内容指定的编码。responseCharset 设置仅仅是用来作为一个参考,特别是 autoResponseHeader 设置为
true
时,FleaPHP 会自动送出
Content-Type: text/html; charset=xxxxx
的 HTTP 头信息。

databaseCharset 指示当 FleaPHP 连接数据库时,要指定的编码,默认值为
gb2312
许多较为高级的数据库,例如 PostgreSQL、MySQL 4.1/5.x、Oracle 等,都允许在数据库中保存不同编码的数据。因此开发者要正确设置 databaseCharset 设置,以便 FleaPHP 在连接数据库时能够正确设置编码,避免乱码问题。
对于较老的数据库,例如 MySQL 3.x/4.0,这个设置没有意义。

autoResponseHeader 指示是否自动输出
Content-Type: text/html; charset=xxxxx
的 HTTP 头信息,默认值为
true
当该设置为
true
时,FleaPHP 会在初始化时自动输出一个 HTTP 头信息,以指定应用程序输出内容的编码。具体指定什么编码,由 responseCharset 设置决定。
对于大部分服务器,启用该设置可以避免出现浏览器无法正确识别输出内容编码的问题。但在某些服务器环境中,启用该设置会导致出现无法输出动态图像等问题。

charsetConstant 指示是否自动定义
RESPONSE_CHARSET
DATABASE_CHARSET
等常量,默认值为
true
当该设置为
true
时,FleaPHP 会在初始化时根据 responseCharsetdatabaseCharset 设置分别定义
RESPONSE_CHARSET
DATABASE_CHARSET
常量。应用程序可以用这两个常量简化一些开发。

multiLangaugeSupport 指示是否启用多语言支持,默认值为
false
当该设置为
true
时,会自动载入由 languageSupportProvider 指定的多语言支持服务提供程序。

languageSupportProvider 指定提供多语言支持的提供程序,默认值为
FLEA_Com_Language
FLEA_Com_Language
是 FleaPHP 自带的多语言支持服务提供程序。

languageFilesDir 指示语言文件的保存位置,默认值为
null
当使用多语言支持时,必须修改该设置,指向一个保存所有语言文件的目录。
语言文件按照“语言/字典名.php”的目录结构存储,例如 languageFilesDir 设置为
/var/www/test/languages
,则语言文件的实际文件名就可能是:
/var/www/test/languages/chinese-gb2312/user_interface.php


defaultLanguage 指示默认语言,默认值为
chinese-gb2312
当载入语言文件时如果没有指定语言参数,则会从 defaultLanguage 指定的语言目录下载入字典文件。

autoLoadLanguage 指示要自动载入的语言字典,默认值为
null
autoLoadLanguage 可以是数组,其中每一项是一个要载入的字典名。或者是一个用“,”分隔多个字典名的字符串。

FLEA_Dispatcher_Auth 和 RBAC 组件

dispatcherAuthProvider 指示调度器要使用的验证服务提供程序,默认值为
FLEA_Com_RBAC
FLEA_Com_RBAC
提供了
check()
方法,让调度器通过调用该方法来检查当前发起请求的用户是否有权限访问指定的控制器和控制器动作方法。如果开发者要编写自己的验证服务提供程序,就必须实现
check()
方法。如果使用开发者自己编写的调度器,也可以通过该设置来指定验证服务提供程序。
check()
方法的原型是:
function check($roles, $ACT)


defaultControllerACTFile 指示
RBAC
组件要使用的默认 ACT 文件,默认值为空字符串 通过该设置,可以为多个控制器指定 ACT(访问控制表),而不需要为每一个控制器都提供一个
.act.php
文件。注意,该设置指定的文件必须是完整路径,或者相对于应用程序入口(
index.php
)的相对路径。

autoQueryDefaultACTFile 指示
RBAC
组件是否在没有找到控制器的 ACT 文件时,是否从默认 ACT 文件中查询控制器的 ACT,默认值为
false

controllerACTLoadWarning 指示没有找到控制器的 ACT 时,是否显示警告信息,默认值为
true

defaultControllerACT 指示当没有为控制器提供 ACT 时,要使用的默认 ACT,默认值为
null

dispatcherAuthFailedCallback 指示用户没有权限访问控制器或控制器方法时,要调用的处理程序,默认值为
null

RBACSessionKey 指示 RBAC 组件用什么键名在 session 中保存用户数据,默认值为
RBAC_USERDATA
如果在一个域名下同时运行多个应用程序,请务必为每一个应用程序使用自己独一无二的键名。

日志服务和错误处理

logEnabled 指示是否启用日志服务,默认值为
false
如果该设置为
true
,则会自动载入由 logProvider 设置指定的日志服务提供程序。

logProvider 指示日志服务的程序,默认值为
FLEA_Com_Log

logFileDir 指示用什么目录保存日志文件,默认值为
null
最好将日志保存在浏览器无法访问的目录中。

logFilename 指示用什么文件名保存日志,默认值为
access.log

logFileMaxSize 指示当日志文件超过多少 KB 时,自动创建新的日志文件,单位是 KB,不能小于 512KB,默认值为 4096
logErrorLevel 指示哪些级别的错误要保存到日志中,默认值为 ‚warning, error, exception‘
displayErrors 指示是否显示错误信息,默认值为
true

friendlyErrorsMessage 指示是否显示友好的错误信息,默认值为
true

 

Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1349952
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: