有关Yii的main.php 主配置文件的说明
2013-11-25 22:37 Quenteen.Fix 阅读(2851) 评论(0) 编辑 收藏 举报二、主配置文件
保存位置:你的应用/protected/config/main.php
文件内容:一般格式如下:
return array(
'basePath'=>dirname(__FILE__).DIRECTORY_SEPARATOR.'..', //当前应用根目录的绝对物理路径
'name'=>'Yii Blog Demo', //当前应用的名称
// 预载入log(记录)应用组件,这表示该应用组件无论它们是否被访问都要被创建。该应用的参数配置在下面以
“components”为关键字的数组中设置。
'preload'=>array('log'), //log 为组件ID
// 自动载入的模型和组件类
'import'=>array(
'application.models.*', //载入“application/models/”文件夹下的所有模型类
'application.components.*', //载入“application/components/”文件夹下的所有应用组件类
),
'defaultController'=>'post', //设置默认控制器类
// 当前应用的组件配置。更多可供配置的组件详见下面的“核心应用组件”
'components'=>array(
'user'=>array( //user(用户)组件配置,“user”为组件ID
// 可以使用基于cookie 的认证
'allowAutoLogin'=>true, //允许自动登录
),
'cache'=>array( //缓存组件
'class'=>'CMemCache', //缓存组件类
'servers'=>array( //MemCache 缓存服务器配置
array('host'=>'server1', 'port'=>11211, 'weight'=>60), //缓存服务器1
array('host'=>'server2', 'port'=>11211, 'weight'=>40), //缓存服务器2
),
),
'db'=>array( //db(数据库)组件配置,“db”为组件ID
'connectionString' => 'sqlite:protected/data/blog.db', //连接数据库的DSN 字符串
'tablePrefix' => 'tbl_', //数据表前缀
),
// 如果要使用一个MySQL 数据库,请取消下面的注释
/*
'db'=>array(
'connectionString' => 'mysql:host=localhost;dbname=blog', //连接mysql 数据库
'emulatePrepare' => true,
'username' => 'root', //MySQL 数据库用户名
'password' => '', //MySQL 数据库用户密码
'charset' => 'utf8', //MySQL 数据库编码
'tablePrefix' => 'tbl_', //MySQL 数据库表前缀
),
*/
'errorHandler'=>array(
// 使用SiteController 控制器类中的actionError 方法显示错误
'errorAction'=>'site/error', //遇到错误时,运行的操作。控制器名和方法名均小写,并用斜线“/”隔开
),
//URL 路由管理器
'urlManager'=>array(
'urlFormat'=>'path', //URL 格式。共支持两种格式: 'path' 格式( 如:
/path/to/EntryScript.php/name1/value1/name2/value2... ) 和'get' 格式( 如:
/path/to/EntryScript.php?name1=value1&name2=value2...)。当使用'path'格式时,需要设置如下的规则:
'rules'=>array( //URL 规则。语法:<参数名:正则表达式>
'post/<id:\d+>/<title:.*?>'=>'post/view', //将post/12/helloword 指向post/view?id=12&title=helloword
'posts/<tag:.*?>'=>'post/index', //将posts/hahahaha 指向post/index?tag=hahahaha
'<controller:\w+>/<action:\w+>'=>'/',
),
),
'log'=>array( //记录
'class'=>'CLogRouter', //处理记录信息的类
'routes'=>array(
array(
'class'=>'CFileLogRoute', //处理错误信息的类
'levels'=>'error, warning', //错误等级
),
// 如要将错误记录消息在网页上显示,取消下面的注释即可
/*
array(
'class'=>'CWebLogRoute',
),
*/
),
),
), //应用组件配置结束
// 使用Yii::app()->params['参数名']可以访问应用层的参数
'params'=>require(dirname(__FILE__).'/params.php'),
);
核心应用组件:
Yii 预定义了一系列核心应用组件,提供常见Web 应用中所用的功能。例如, request 组件用于解析用户请求并提
供例如URL,cookie 等信息。通过配置这些核心组件的属性,我们可以几乎任意的修改Yii 的默认行为。
下面我们列出了由CWebApplication 预定义的核心组件。
assetManager: CAssetManager - 管理私有资源文件的发布。
authManager: CAuthManager - 管理基于角色的访问控制(RBAC).
cache: CCache - 提供数据缓存功能。注意,你必须指定实际的类(例如CMemCache, CDbCache)。否则,当你访问此
组件时将返回NULL。
clientScript: CClientScript - 管理客户端脚本(javascripts 和CSS).
coreMessages: CPhpMessageSource - 提供Yii 框架用到的核心信息的翻译。
db: CDbConnection - 提供数据库连接。注意,使用此组件你必须配置其connectionString 属性。
errorHandler: CErrorHandler - 处理未捕获的PHP 错误和异常。
format: CFormatter - 格式化数值显示。此功能从版本1.1.0 起开始提供。
messages: CPhpMessageSource - 提供Yii 应用中使用的信息翻译。
request: CHttpRequest - 提供关于用户请求的信息。
securityManager: CSecurityManager - 提供安全相关的服务,例如散列,加密。
session: CHttpSession - 提供session 相关的功能。
statePersister: CStatePersister - 提供全局状态持久方法。
urlManager: CUrlManager - 提供URL 解析和创建相关功能
user: CWebUser - 提供当前用户的识别信息。
themeManager: CThemeManager - 管理主题。
要访问一个应用组件,使用Yii::app()->组件的ID
转自:http://hudeyong926.iteye.com/blog/1484367
用YIIFramework的库开发
- ....
- Yii::createWebApplication($config); //没有run
Yii::import(class1,true),在将class1类文件路径存储时,同时include该文件
注意:你也可以将配置文件分为多个文件, // 例如: db.php, params.php等等
main.php
- <?php
- // 取消下行的注释,来定义一个路径别名
- // Yii::setPathOfAlias('local','path/to/local-folder');
- // 这是 Web 应用配置的主体部分。任何可写的
- // CWebApplication 属性可以在这里配置。
- $config = array(
- // protected 目录的基础路径
- // 使用 Yii::app()->basePath 来访问
- 'basePath' => dirname(__FILE__) . DIRECTORY_SEPARATOR . '..',
- // 应用的名字
- // 使用 Yii::app()->name 来访问
- 'name' => 'My website',
- //路径别名
- // 可以是应用内部的路径,也可以是外部资源
- 'aliases' => array(
- 'myExternalFramework' => dirname(__FILE__) . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'myexternalframework'
- ),
- //维护程序时,这样子所有的请求转发到一个地方
- 'catchAllRequest' => array('site/all'),
- //如何在应用程序处理请求之前执行一段操作?当然这个function方法要存在index.php
- 'onBeginRequest' => 'function',
- //controller path
- 'controllerMap' => array('myController' => 'myExternalFramework.controllers.MyController'),
- // 默认的 controller
- 'defaultController' => 'site',
- // 用户语言(for Locale)
- 'language' => 'es',
- //信息和视图的语言
- 'sourceLanguage' => 'es',
- 'timeZone' => 'Asia/Shanghai',
- 'theme' => 'default',
- // 使用的字符集
- 'charset' => 'utf-8',
- // 预载入的应用组件
- 'preload' => array('log'),
- // 自动载入的类
- 'import' => array(
- 'application.models.*',
- 'application.components.*',
- ),
- // 可以使用 Yii::app()->params['paramName'] 访问的应用级别的参数
- 'params' => require(dirname(__FILE__) . '/params.php'),
- // 在 params.php 中你需要返回这个数组:Yii::app()->setParams设置的只能用Yii::app()->params['xxx']这种数组的方式访问
- // return array('adminEmail'=>'info@example.com');
- // 应用组件的配置
- 'components' => array(
- // assets, 参考www.yiiframework.com/doc/api/CAssetManager
- 'assetManager' => array(
- // 改变磁盘上的路径
- 'basePath' => dirname(__FILE__) . '/../../assets/',
- // 改变url
- 'baseUrl' => '/web/assets/'
- ),
- 'request' => array(
- 'enableCsrfValidation' => true, //如果防止post跨站攻击
- 'enableCookieValidation' => true, //防止Cookie攻击
- ),
- // 缓存
- 'cache' => array(
- 'class' => 'A cache class, like: system.caching.CApcCache',
- ),
- 'session' => array( // memcache session cache
- 'class' => 'CCacheHttpSession',
- 'autoStart' => 1,
- 'sessionName' => 'frontend',
- 'cookieParams' => array('lifetime' => '3600', 'path' => '/', 'domain' => '.test.com', 'httponly' => '1'),
- 'cookieMode' => 'only',
- ),
- // 你可以使用 scriptMap 来配置脚本来自哪里。
- // 对于一个生产环境的配置,如下
- 'clientScript' => array(
- 'scriptMap' => array(
- 'register.js' => 'site.min.js',
- 'login.js' => 'site.min.js',
- ),
- ),
- // 对于一个开发环境,可以这样做
- 'clientScript' => array(
- 'scriptMap' => array(
- 'register.js' => 'register.js',
- 'login.js' => 'login.js',
- ),
- ),
- ),
- );
- $database = require(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'db.php');
- if (!empty($database)) {
- $config['components'] = CMap::mergeArray($config['components'],$database);
- // Yii::app()->setComponents($database);
- }
- return $config;
db.php
- <?php
- return array(
- 'db' => array(
- 'connectionString' => 'mysql:host=192.168.1.240;dbname=tttt',
- 'emulatePrepare' => true,
- 'username' => 'root',
- 'password' => '****',
- 'charset' => 'utf8',
- ),
- 'card' => array(
- 'class' => 'CDbConnection',//
- 'connectionString' => 'mysql:host=192.168.1.240;dbname=card',
- 'emulatePrepare' => true,
- 'username' => 'root',
- 'password' => '**',
- 'charset' => 'utf8',
- ),
- );
params.php
- <?php
- return array(
- 'adminEmail'=>'info@example.com',
- 'pagesize'=>'100',
- 'pager'=>array(
- 'class'=>'PagerWidget',
- 'maxButtonCount'=>8,
- 'firstPageLabel'=>'首页',
- 'lastPageLabel'=>'末页',
- 'nextPageLabel'=>'下一页',
- 'prevPageLabel'=>'上一页',
- 'header'=>'',
- 'cssFile'=>false,
- ),
- );
index.php
配置环境常量,不同环境调用不同配置文件和调试级别。
- /**
- * 应用程序环境,可选:development,production,
- */
- defined('APP_ENV') or define('APP_ENV','development');
- // change the following paths if necessary
- if (APP_ENV == 'production') {
- error_reporting(0);
- $yii=dirname(__FILE__).'/framework/yiilite.php';
- defined('YII_TRACE_LEVEL') or define('YII_TRACE_LEVEL',1);
- } else {
- $yii=dirname(__FILE__).'/framework/yii.php';
- // remove the following lines when in production mode
- defined('YII_DEBUG') or define('YII_DEBUG',true);
- // specify how many levels of call stack should be shown in each log message
- defined('YII_TRACE_LEVEL') or define('YII_TRACE_LEVEL',3);
- }
- $config=dirname(__FILE__).'/protected/config/'.APP_ENV.'.php';
- require('path/to/globals.php'); //见附件
- require_once($yii);
- Yii::createWebApplication($config)->run();
development.php
开启weblog,profile,数据库性能显示,数据库查询参数记录,GII
production.php
开启数据库结构缓存,关闭错误显示
- <?php
- return CMap::mergeArray(
- require(dirname(__FILE__).'/main.php'),
- array(
- 'components'=>array(
- // uncomment the following to use a MySQL database
- 'log'=>array(
- 'class'=>'CLogRouter',
- 'routes'=>array(
- array(
- 'class'=>'CFileLogRoute',
- 'levels'=>'error, warning',
- )
- ),
- ),
- ),
- )
- );
先mark,后面再做修改。