FleaPHP 是一个具有高度灵活性的框架。开发者可以用不同的设置来调整 FleaPHP 的工作方式。这些设置统一保存在名为“应用程序设置”的数据源中。

实际上,除了 FleaPHP 框架本身,应用程序也可以使用“应用程序设置”来保存应用程序运行时需要的各种设置。

FleaPHP 的应用程序设置有一个默认配置文件,保存在 FLEA/Config/Default_APP_INF.php 中。应用程序可以在入口文件(例如 index.php)中修改这些设置,以便调整 FleaPHP 的工作方式。


如何使用应用程序设置?

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

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

当需要指定多个应用程序设置时,推荐使用该方法。具体的做法非常简单,只需要定义类似如下的文件即可(假设下面的内容保存到文件 APP/Config/MY_APP_INF.php)。

<?php
return 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') 即可。例如:

<?php
require('FLEA/FLEA.php');
register_app_inf('APP/Config/MY_APP_INF.php');
run();
?>

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

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

<?php
require('FLEA/FLEA.php');
set_app_inf('defaultController', 'UserCenter');
run();
?>

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


默认的应用程序设置

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

核心配置

  • namespace 应用程序的默认名字空间,默认值为空字符串

    这个设置会影响到应用程序所有类的名称定义。例如 namespace 设置为 FOO 时,应用程序所有控制器、模型的类名字都要加上前缀 FOO_。变成诸如 FOO_Controller_DefaultFOO_Model_News 等。

    为了让你的代码能够更容易的在其他应用程序中复用,最好将 namespace 设置为空字符串。

  • controllerAccessor 指示控制器的 URL 参数名,默认值为 controller

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

  • defaultController 指示默认控制器的名字,默认值为 Default

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

  • actionAccessordefaultAction,默认值分别为 actionindex

    这两个设置的作用和 controllerAccessordefaultController 类似。只不过用于指定控制器动作的参数名和默认动作名。

  • urlMode 指定 URL 分析和构造模式,默认值为 URL_STANDARD

    URL 的分析和构造模式,目前支持三种,分别是:URL_STANDARDURL_PATHINFOURL_REWRITE

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

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

  • urlLowerChar 指示是否将 url 参数中包含的控制器名字和动作名字强制转为小写字符,默认值为 false

    对于 Windows 系统来说,这个设置无关紧要。而对于 Linux/Unix 系统来说,这个设置会关系到控制器类定义文件的命名。

    urlLowerChartrue 时,控制器名字会被转为小写字符,而该控制器的类名字除第一个字母为大写外,其他全为小写。例如控制器名为 MyController,实际的控制器类名称为 Mycontroller,对应的类定义文件为 Mycontroller.php

    urlLowerCharfalse 时,控制器名字和控制器的类名字完全对应,例如控制器名为 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

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

<?php
set_app_inf('dispatcherFailedCallback', 'appDispatcherFailedHandler');
?>
  • internalCacheDir 指示 FleaPHP 内部及 cache 系列函数使用的缓存目录,默认值为 FLEA/_Cache/ 目录
  • autoLoad 指示要自动载入的文件,默认载入 FLEA_Helper_Array.phpFLEA_Helper_Html.phpFLEA_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_MagicQuotesFLEA_Filter_Uri 过滤器。因此开发者不应该在 requestFilters 设置中调用这两个过滤器

数据库相关

  • dbDSN 数据库连接设置,必须是数组,默认值为 null

    dbDSN 是 FleaPHP 应用程序默认的数据库连接设置。正确指定该设置后,FleaPHP 会在应用程序需要访问数据库时尝试自动连接数据库。

    dbDSN 数组中每个选项的含义如下:

    • driver 数据库驱动类型,例如 mysqlpgsql 等;
    • host 数据库所在服务器,通常为 localhost127.0.0.1
    • port 连接数据库的端口,通常无需指定
    • login 连接时使用的用户名
    • password 连接时使用的密码
    • database 连接后要使用的数据库名
    • charset 字符集设置,如果没有设置该选项,则以应用程序设置 databaseCharset 为准
    • options 附加的连接选项

    典型的 dbDSN 设置如下:

<?php
set_app_inf('dbDSN',
array(
'driver'    => '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_CHARSETDATABASE_CHARSET 等常量,默认值为 true

    当该设置为 true 时,FleaPHP 会在初始化时根据 responseCharsetdatabaseCharset 设置分别定义 RESPONSE_CHARSETDATABASE_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

FleaPHP 开发指南 - 5. 应用程序设置相关推荐

  1. FleaPHP 开发指南 - 3. 应用程序入口

    与许多开发框架一样,FleaPHP 通常也使用一个入口文件来启动框架,并运行应用程序代码.虽然 FleaPHP 并不要求应用程序必须使用单一的入口文件,不过在本系列文章中,我大部分时间都使用单一入口文 ...

  2. FleaPHP 开发指南

    FleaPHP 开发指南提供了使用 FleaPHP 开发应用程序的各方面内容.­开发指南中,大部分文章属于 Step by Step 的教程形式,少数文章深入描述 FleaPHP 的某些重要特征. 虽 ...

  3. Elasticsearch6.8开发指南-第三章-设置Elasticsearch

    Elasticsearch6.8开发指南-第三章-设置Elasticsearch 本章简介 安装Elasticsearch 使用.zip或安装Elasticsearch.tar.gz 在Windows ...

  4. Python开发指南[1]之程序员计时小时钟(附源码)

    Python开发指南[1]之程序员计时小时钟 程序之美 前言 主体 运行效果 核心代码 逻辑分析 结束语 程序之美 前言 Python作为一门编程语言,这门语言的魅力和影响力已经远超C#.C++等编程 ...

  5. Hue开发指南 - 提交 Spark 程序

    目录 Hue开发指南 1.Spark文件打包成一个Jar包提交Hue运行 1.1 上传Spark Jar包至HDFS文件系统 1.2.Hue中创建Spark任务 2.多jar包导入执行(依赖jar包与 ...

  6. Android开发指南 1──应用程序基础

    登录 |  注册 译言精选 订阅 社区 译言译事 翻译答问 译言帮助 文库 原文库 译文库 全部项目 空间 控制台 个人主页 发布 发布原文 发布翻译 发布编译 发布原创 首页 商业 科技 文化 体坛 ...

  7. FleaPHP 开发指南 - 6. 访问数据库

    这一章我们就来看看 FleaPHP 的数据库访问功能.体验一下 FleaPHP 出色的自动化 CRUD 能力. 连接数据库 在 htdocs 目录中创建子目录 testDB,并在子目录下创建文件 te ...

  8. FleaPHP 开发指南 - 2. FleaPHP 中的 MVC 模式

    理解 FleaPHP 中,MVC 模式是如何实现的,以及其特点,可以帮助你更好的运用 FleaPHP. 什么叫做设计模式? 简单来说,设计模式(Pattern)就是解决某一类问题的特定方法.由于这种特 ...

  9. FleaPHP 开发指南 - 4. 命名规范和目录结构

    FleaPHP 的命名规则和目录结构初看上去比较复杂,但习惯以后,你会发现这种命名规则带来许多好处.因此像 Zend Framework 也是采用同样的做法. 当然,FleaPHP 对于应用程序的命名 ...

最新文章

  1. html最新的版本是多少,HTML5之前的版本是什么?
  2. 人工智能影响未来娱乐的31种方式
  3. 移动平台的meta标签-----神奇的功效
  4. 利用gcc的-finstrument-functions获取函数轨迹跟踪
  5. 希腊字母(mark)
  6. ThreadLocal 内存泄露的实例分析
  7. linux打开服务iis,如何在Linux中引导时列出启动服务?
  8. Java LocalDate类| 带示例的getEra()方法
  9. axios请求失败,response.data返回的状态码及错误信息获取
  10. RHEL6.2上使用 libvirt创建和管理KVM虚拟机
  11. HLSL内置函数一览
  12. 解决ASP.NET中Redis 每小时6000次访问请求的问题
  13. 给初学者的 RxJava2.0 教程 (九)
  14. 《MySQL技术内幕 InnoDB存储引擎》.pdf
  15. 神经网络BP反向传播算法原理和详细推导流程
  16. 一个不错微服务架构图
  17. php 判断是否是日文,php正则判断中文韩文的编码的例子
  18. 原理与结构解析——智能门锁方案
  19. 好玩的ios APP动动手指,轻松挣美金~~
  20. Operator基础:2: Operator SDK安装

热门文章

  1. springboot发送邮件-163邮箱
  2. Linux Debian 系统的单网卡绑定多个IP地址的操作步骤
  3. 【cs224n学习作业】Assignment 1 - Exploring Word Vectors
  4. 电商系统开发实战-用户微服务基础模块开发
  5. mib browser读取飞塔mib文件的oid
  6. Excel VBA初级系列培训--课时1
  7. 中M2018春C入门和进阶练习集
  8. (转)七个受用一生的心理寓言
  9. Java中的几种插件
  10. JavaSE(二)-抽象类