fleaphp 是一个具有高度灵活性的框架。开发者可以用不同的设置来调整 fleaphp 的工作方式。这些设置统一保存在名为“应用程序设置”的数据源中。
实际上,除了 fleaphp 框架本身,应用程序也可以使用“应用程序设置”来保存应用程序运行时需要的各种设置。
fleaphp 的应用程序设置有一个默认配置文件,保存在 flea/config/default_app_inf.php
中。应用程序可以在入口文件(例如 index.php
)中修改这些设置,以便调整 fleaphp 的工作方式。
当 fleaphp 框架初始化时,默认的应用程序设置文件(default_app_inf.php
)会被载入。如果应用程序要指定设置,推荐的做法有下列几种:
当需要指定多个应用程序设置时,推荐使用该方法。具体的做法非常简单,只需要定义类似如下的文件即可(假设下面的内容保存到文件 app/config/my_app_inf.php
)。
<?phpreturn array( 'defaultcontroller' => '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')
即可。例如:
<?phprequire('flea/flea.php');register_app_inf('app/config/my_app_inf.php');run();?>
对于少量的设置,可以在入口文件中直接用 set_app_inf()
函数指定。例如:
<?phprequire('flea/flea.php');set_app_inf('defaultcontroller', 'usercenter');run();?>
不管采用哪一种方式,重要的都是必须在 run()
之前就指定好应用程序设置。
默认的应用程序设置提供了符合常见应用程序运行需要的设置。下面分类列出这些设置的名字和详细说明。
这个设置会影响到应用程序所有类的名称定义。例如 namespace
设置为 foo
时,应用程序所有控制器、模型的类名字都要加上前缀 foo_
。变成诸如 foo_controller_default
、foo_model_news
等。
为了让你的代码能够更容易的在其他应用程序中复用,最好将 namespace 设置为空字符串。
controller
这个设置指定在 url 查询参数中,用什么名字的参数指定控制器名字。例如 controlleraccessor 设置为 “ctl
” 时,就必须用 index.php?ctl=mycontroller
来指定要调用的控制器。
default
当 url
参数中没有指定要调用的控制器时,将依据 defaultcontroller 的设置调用默认的控制器。
action
和 index
这两个设置的作用和 controlleraccessor、defaultcontroller 类似。只不过用于指定控制器动作的参数名和默认动作名。
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 重写。
url
参数中包含的控制器名字和动作名字强制转为小写字符,默认值为 false
对于 windows 系统来说,这个设置无关紧要。而对于 linux/unix 系统来说,这个设置会关系到控制器类定义文件的命名。
当 urllowerchar 为 true
时,控制器名字会被转为小写字符,而该控制器的类名字除第一个字母为大写外,其他全为小写。例如控制器名为 mycontroller
,实际的控制器类名称为 mycontroller
,对应的类定义文件为 mycontroller.php
。
当 urllowerchar 为 false
时,控制器名字和控制器的类名字完全对应,例如控制器名为 quickbenchmark
,实际的控制器类名称为 quickbenchmark
,对应的类定义文件为 quickbenchmark.php
。
controller_
action
和空字符串 使用前缀和后缀可以,让控制器动作方法的名称和控制器中的其他方法区别开来。同时也可以避免无意中造成控制器内的私有方法被浏览器访问到。
flea_dispatcher_simple
url 调度器分析 url 参数,决定要调用的控制器和控制器动作方法,最后调用控制器动作方法。默认的 flea_dispatcher_simple
是一个简单的调度器,仅仅是分析 url 参数,然后完成调用工作。而更复杂的 flea_dispatcher_auth
则可以结合 fleaphp
自带的 rbac
(基于角色的访问控制)组件完成访问控制功能。
如果开发者自己编写了调度器,那么修改这个设置即可让应用程序使用开发者自己编写的调度器。
null
如果希望应用程序处理调度失败的情况(例如控制器或控制器方法不存在),则需要覆盖这个设置。
<?phpset_app_inf('dispatcherfailedcallback', 'appdispatcherfailedhandler');?>
cache
系列函数使用的缓存目录,默认值为 flea/_cache/
目录 flea_helper_array.php
、flea_helper_html.php
和 flea_controller_action.php
三个文件 这个设置必须是一个数组,数组中每一个项目为要自动载入的文件。
session
服务提供程序,默认值为 null
如果设置为 null
,则表示使用 php 自带的 session
服务。
session
支持,默认值为 true
如果该设置为 true
,则每次 fleaphp 框架初始化后都会自动执行 session_start()
函数。
和 autoload 设置类似,该设置必须为数组。但数组中每一个项目为要运行的过滤器类名字。过滤器按照出现在数组中的顺序初始化和运行。
每一个过滤器实际上都是一个脚本,无需要实现为一个类。可以参考 flea/filter/
目录中的过滤器代码实现自己的过滤器。
fleaphp 初始化时,会根据 php 运行环境设置和应用程序设置来决定是否自动运行 flea_filter_magicquotes
和 flea_filter_uri
过滤器。因此开发者不应该在 requestfilters 设置中调用这两个过滤器。
null
dbdsn
是 fleaphp 应用程序默认的数据库连接设置。正确指定该设置后,fleaphp 会在应用程序需要访问数据库时尝试自动连接数据库。
dbdsn
数组中每个选项的含义如下:
mysql
、pgsql
等; localhost
或 127.0.0.1
典型的 dbdsn 设置如下:
<?phpset_app_inf('dbdsn', array( 'driver' => 'mysql', 'host' => 'localhost', 'login' => 'username', 'password' => 'password', 'database' => 'test_db', ));?>
true
如果你希望自己控制数据库连接,那么可以将该设置指定为 false
。
flea_helper_validation
php
目前 fleaphp 提供了 flea_view_simple
模版引擎和 flea_view_smarty
模版引擎。其中 flea_view_smarty
实际上是一个连接器,用于连接 smarty
模版引擎。
null
不同模版引擎可能需要不同的配置,可以用 viewconfig
设置来指定。
有关 fleaphp 对 i18n 支持的详细信息,请参考开发指南的相关章节。
gb2312
fleaphp 核心本身并不假定要处理的内容采用什么编码,也不会自动将输入内容转换为输出内容指定的编码。responsecharset 设置仅仅是用来作为一个参考,特别是 autoresponseheader 设置为 true
时,fleaphp 会自动送出 content-type: text/html; charset=xxxxx
的 http 头信息。
gb2312
许多较为高级的数据库,例如 postgresql、mysql 4.1/5.x、oracle 等,都允许在数据库中保存不同编码的数据。因此开发者要正确设置 databasecharset 设置,以便 fleaphp 在连接数据库时能够正确设置编码,避免乱码问题。
对于较老的数据库,例如 mysql 3.x/4.0,这个设置没有意义。
content-type: text/html; charset=xxxxx
的 http 头信息,默认值为 true
当该设置为 true
时,fleaphp 会在初始化时自动输出一个 http 头信息,以指定应用程序输出内容的编码。具体指定什么编码,由 responsecharset 设置决定。
对于大部分服务器,启用该设置可以避免出现浏览器无法正确识别输出内容编码的问题。但在某些服务器环境中,启用该设置会导致出现无法输出动态图像等问题。
response_charset
、database_charset
等常量,默认值为 true
当该设置为 true
时,fleaphp 会在初始化时根据 responsecharset 和 databasecharset 设置分别定义 response_charset
和 database_charset
常量。应用程序可以用这两个常量简化一些开发。
false
当该设置为 true
时,会自动载入由 languagesupportprovider 指定的多语言支持服务提供程序。
flea_com_language
flea_com_language
是 fleaphp 自带的多语言支持服务提供程序。
null
当使用多语言支持时,必须修改该设置,指向一个保存所有语言文件的目录。
语言文件按照“语言/字典名.php”的目录结构存储,例如 languagefilesdir 设置为 /var/www/test/languages
,则语言文件的实际文件名就可能是:/var/www/test/languages/chinese-gb2312/user_interface.php
。
chinese-gb2312
当载入语言文件时如果没有指定语言参数,则会从 defaultlanguage 指定的语言目录下载入字典文件。
null
autoloadlanguage 可以是数组,其中每一项是一个要载入的字典名。或者是一个用“,”分隔多个字典名的字符串。
flea_com_rbac
flea_com_rbac
提供了 check()
方法,让调度器通过调用该方法来检查当前发起请求的用户是否有权限访问指定的控制器和控制器动作方法。如果开发者要编写自己的验证服务提供程序,就必须实现 check()
方法。如果使用开发者自己编写的调度器,也可以通过该设置来指定验证服务提供程序。
check()
方法的原型是:function check($roles, $act)
rbac
组件要使用的默认 act 文件,默认值为空字符串 通过该设置,可以为多个控制器指定 act(访问控制表),而不需要为每一个控制器都提供一个 .act.php
文件。注意,该设置指定的文件必须是完整路径,或者相对于应用程序入口(index.php
)的相对路径。
rbac
组件是否在没有找到控制器的 act 文件时,是否从默认 act 文件中查询控制器的 act,默认值为 false
true
null
null
rbac_userdata
如果在一个域名下同时运行多个应用程序,请务必为每一个应用程序使用自己独一无二的键名。
false
如果该设置为 true
,则会自动载入由 logprovider 设置指定的日志服务提供程序。
flea_com_log
null
最好将日志保存在浏览器无法访问的目录中。
access.log
true
true
新闻热点
疑难解答