ThinkPHP -- 开发初体验及其几个配置文件的介绍
- ThinkPHP是一款不错的轻量级的PHP+MVC框架,它吸取了Ruby On Rails的特性,不仅将Model、View、Controller分开,而且实现了ORM、模板标签等高级特性。
开发工具:
- 个人推荐调试工具用phpstorm,这款工具和RubyMine是同种风格的,相对其他开发工具更方便调试。
- 刚开始体验php开发的时候,是用wampserver这款集成工具,因为比较简单入手,但是其实最好还是不要用集成的,这样会更安全些。
ThinkPHP框架初体验
- 下载地址:http://www.thinkphp.cn/down.html
- 下载完,拷贝到wampserver的www目录中,这个时候ThinkPHP还是不可以使用的。
- 我们需要在WWW根目录新建一个文件夹app,在这个文件夹下新建一个index.php,插入下面代码:
<?php require '/ThinkPHP框架所在目录/ThinkPHP.php'; ?>
- 然后在浏览器的地址栏输入http://localhost/app/
注意:默认端口号是80,如果是已修改端口号,如8080,请输入http://localhost:8080/app/
- 接下来就可以看到这个图片,证明项目可运行啦~~
很简单,对不对!@_@!!
下面再介绍几个文件配置:
- (一)根目录下的index.php:(根据项目需要进行修改配置)
define('APP_NAME','Home'); // 定义项目名称 define('APP_PATH','./Home/'); // 定义项目目录 define('APP_DEBUG',true); // 开启调试模式 //define('HTML_PATH',APP_PATH.'Runtime/Html/'); //静态缓存目录配置,默认是APP_PATH.'Html/' require('ThinkPHP/ThinkPHP.php'); // 加载入口文件
如果你想关闭反斜杠设置,可以在修改如下:
<?php define('APP_NAME','Admin'); // 定义项目名称 define('APP_PATH','./Admin/'); // 定义项目目录 define('APP_DEBUG',true); //开启调试模式
//关闭反斜杠设置 if( !ini_set ('magic_quotes_gpc', 0) ){ if ( get_magic_quotes_gpc() ) { function stripslashes_deep($value) { $value = is_array($value) ? array_map('stripslashes_deep', $value) : (isset($value) ? stripslashes($value) : null); return $value; } $_POST = stripslashes_deep($_POST); $_GET = stripslashes_deep($_GET); $_COOKIE = stripslashes_deep($_COOKIE); $_REQUEST = stripslashes_deep($_REQUEST); } } require('ThinkPHP/ThinkPHP.php'); // 加载入口文件
如果想了解更多关于反斜杠设置,请链接:http://www.cnblogs.com/lmei/p/3373864.html
- (二)ThinkPHP的惯例配置文件convention.php
该文件的存放目录为ThinkPHP/Conf/convention.php,下面为该配置文件的一些注释说明:
<?php /** * ThinkPHP惯例配置文件 * 该文件请不要修改,如果要覆盖惯例配置的值,可在项目配置文件中设定和惯例不符的配置项 * 配置名称大小写任意,系统会统一转换成小写 * 所有配置参数都可以在生效前动态改变 * @category Think * @package Common * @author liu21st <liu21st@gmail.com> * @version $Id: convention.php 3088 2012-07-29 09:12:19Z luofei614@gmail.com $ */ defined('THINK_PATH') or exit(); return array( /* 项目设定 */ 'APP_STATUS' => 'debug', // 应用调试模式状态 调试模式开启后有效 默认为debug 可扩展 并自动加载对应的配置文件 'APP_FILE_CASE' => false, // 是否检查文件的大小写 对Windows平台有效 'APP_AUTOLOAD_PATH' => '',// 自动加载机制的自动搜索路径,注意搜索顺序 'APP_TAGS_ON' => true, // 系统标签扩展开关 'APP_SUB_DOMAIN_DEPLOY' => false, // 是否开启子域名部署 'APP_SUB_DOMAIN_RULES' => array(), // 子域名部署规则 'APP_SUB_DOMAIN_DENY' => array(), // 子域名禁用列表 'APP_GROUP_LIST' => '', // 项目分组设定,多个组之间用逗号分隔,例如'Home,Admin' 'APP_GROUP_MODE' => 0, // 分组模式 0 普通分组 1 独立分组 'APP_GROUP_PATH' => 'Modules', // 分组目录 独立分组模式下面有效 'ACTION_SUFFIX' => '', // 操作方法后缀 /* Cookie设置 */ 'COOKIE_EXPIRE' => 0, // Coodie有效期 'COOKIE_DOMAIN' => '', // Cookie有效域名 'COOKIE_PATH' => '/', // Cookie路径 'COOKIE_PREFIX' => '', // Cookie前缀 避免冲突 /* 默认设定 */ 'DEFAULT_M_LAYER' => 'Model', // 默认的模型层名称 'DEFAULT_C_LAYER' => 'Action', // 默认的控制器层名称 'DEFAULT_APP' => '@', // 默认项目名称,@表示当前项目 'DEFAULT_LANG' => 'zh-cn', // 默认语言 'DEFAULT_THEME' => '', // 默认模板主题名称 'DEFAULT_GROUP' => 'Home', // 默认分组 'DEFAULT_MODULE' => 'Index', // 默认模块名称 'DEFAULT_ACTION' => 'index', // 默认操作名称 'DEFAULT_CHARSET' => 'utf-8', // 默认输出编码 'DEFAULT_TIMEZONE' => 'PRC', // 默认时区 'DEFAULT_AJAX_RETURN' => 'JSON', // 默认AJAX 数据返回格式,可选JSON XML ... 'DEFAULT_JSONP_HANDLER' => 'jsonpReturn', // 默认JSONP格式返回的处理方法 'DEFAULT_FILTER' => 'htmlspecialchars', // 默认参数过滤方法 用于 $this->_get('变量名');$this->_post('变量名')... /* 数据库设置 */ 'DB_TYPE' => 'mysql', // 数据库类型 'DB_HOST' => 'localhost', // 服务器地址 'DB_NAME' => '', // 数据库名 'DB_USER' => 'root', // 用户名 'DB_PWD' => '', // 密码 'DB_PORT' => '', // 端口 'DB_PREFIX' => 'think_', // 数据库表前缀 'DB_FIELDTYPE_CHECK' => false, // 是否进行字段类型检查 'DB_FIELDS_CACHE' => true, // 启用字段缓存 'DB_CHARSET' => 'utf8', // 数据库编码默认采用utf8 'DB_DEPLOY_TYPE' => 0, // 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器) 'DB_RW_SEPARATE' => false, // 数据库读写是否分离 主从式有效 'DB_MASTER_NUM' => 1, // 读写分离后 主服务器数量 'DB_SLAVE_NO' => '', // 指定从服务器序号 'DB_SQL_BUILD_CACHE' => false, // 数据库查询的SQL创建缓存 'DB_SQL_BUILD_QUEUE' => 'file', // SQL缓存队列的缓存方式 支持 file xcache和apc 'DB_SQL_BUILD_LENGTH' => 20, // SQL缓存的队列长度 'DB_SQL_LOG' => false, // SQL执行日志记录 /* 数据缓存设置 */ 'DATA_CACHE_TIME' => 0, // 数据缓存有效期 0表示永久缓存 'DATA_CACHE_COMPRESS' => false, // 数据缓存是否压缩缓存 'DATA_CACHE_CHECK' => false, // 数据缓存是否校验缓存 'DATA_CACHE_PREFIX' => '', // 缓存前缀 'DATA_CACHE_TYPE' => 'File', // 数据缓存类型,支持:File|Db|Apc|Memcache|Shmop|Sqlite|Xcache|Apachenote|Eaccelerator 'DATA_CACHE_PATH' => TEMP_PATH,// 缓存路径设置 (仅对File方式缓存有效) 'DATA_CACHE_SUBDIR' => false, // 使用子目录缓存 (自动根据缓存标识的哈希创建子目录) 'DATA_PATH_LEVEL' => 1, // 子目录缓存级别 /* 错误设置 */ 'ERROR_MESSAGE' => '页面错误!请稍后再试~',//错误显示信息,非调试模式有效 'ERROR_PAGE' => '', // 错误定向页面 'SHOW_ERROR_MSG' => false, // 显示错误信息 'TRACE_EXCEPTION' => false, // TRACE错误信息是否抛异常 针对trace方法 /* 日志设置 */ 'LOG_RECORD' => false, // 默认不记录日志 'LOG_TYPE' => 3, // 日志记录类型 0 系统 1 邮件 3 文件 4 SAPI 默认为文件方式 'LOG_DEST' => '', // 日志记录目标 'LOG_EXTRA' => '', // 日志记录额外信息 'LOG_LEVEL' => 'EMERG,ALERT,CRIT,ERR',// 允许记录的日志级别 'LOG_FILE_SIZE' => 2097152, // 日志文件大小限制 'LOG_EXCEPTION_RECORD' => false, // 是否记录异常信息日志 /* SESSION设置 */ 'SESSION_AUTO_START' => true, // 是否自动开启Session 'SESSION_OPTIONS' => array(), // session 配置数组 支持type name id path expire domain 等参数 'SESSION_TYPE' => '', // session hander类型 默认无需设置 除非扩展了session hander驱动 'SESSION_PREFIX' => '', // session 前缀 //'VAR_SESSION_ID' => 'session_id', //sessionID的提交变量 /* 模板引擎设置 */ 'TMPL_CONTENT_TYPE' => 'text/html', // 默认模板输出类型 'TMPL_ACTION_ERROR' => THINK_PATH.'Tpl/dispatch_jump.tpl', // 默认错误跳转对应的模板文件 'TMPL_ACTION_SUCCESS' => THINK_PATH.'Tpl/dispatch_jump.tpl', // 默认成功跳转对应的模板文件 'TMPL_EXCEPTION_FILE' => THINK_PATH.'Tpl/think_exception.tpl',// 异常页面的模板文件 'TMPL_DETECT_THEME' => false, // 自动侦测模板主题 'TMPL_TEMPLATE_SUFFIX' => '.html', // 默认模板文件后缀 'TMPL_FILE_DEPR' => '/', //模板文件MODULE_NAME与ACTION_NAME之间的分割符 /* URL设置 */ 'URL_CASE_INSENSITIVE' => false, // 默认false 表示URL区分大小写 true则表示不区分大小写 'URL_MODEL' => 1, // URL访问模式,可选参数0、1、2、3,代表以下四种模式: // 0 (普通模式); 1 (PATHINFO 模式); 2 (REWRITE 模式); 3 (兼容模式) 默认为PATHINFO 模式,提供最好的用户体验和SEO支持 'URL_PATHINFO_DEPR' => '/', // PATHINFO模式下,各参数之间的分割符号 'URL_PATHINFO_FETCH' => 'ORIG_PATH_INFO,REDIRECT_PATH_INFO,REDIRECT_URL', // 用于兼容判断PATH_INFO 参数的SERVER替代变量列表 'URL_HTML_SUFFIX' => '', // URL伪静态后缀设置 'URL_PARAMS_BIND' => true, // URL变量绑定到Action方法参数 'URL_404_REDIRECT' => '', // 404 跳转页面 部署模式有效 /* 系统变量名称设置 */ 'VAR_GROUP' => 'g', // 默认分组获取变量 'VAR_MODULE' => 'm', // 默认模块获取变量 'VAR_ACTION' => 'a', // 默认操作获取变量 'VAR_AJAX_SUBMIT' => 'ajax', // 默认的AJAX提交变量 'VAR_JSONP_HANDLER' => 'callback', 'VAR_PATHINFO' => 's', // PATHINFO 兼容模式获取变量例如 ?s=/module/action/id/1 后面的参数取决于URL_PATHINFO_DEPR 'VAR_URL_PARAMS' => '_URL_', // PATHINFO URL参数变量 'VAR_TEMPLATE' => 't', // 默认模板切换变量 'VAR_FILTERS' => 'filter_exp', // 全局系统变量的默认过滤方法 多个用逗号分割 'OUTPUT_ENCODE' => true, // 页面压缩输出 'HTTP_CACHE_CONTROL' => 'private', // 网页缓存控制 );
(1)如果你想开启分组功能,可以修改上面配置文件,比如分组:Index、Admin,配置成下面所示,
'APP_GROUP_MODE' => 0, //0:普通分组;1为独立分组 'APP_GROUP_LIST'=>'Index, Admin', //假设Index为前端,Admin为后端 'DEFAULT_GROUP'=>'Index' //默认分组
这样就实现了分组了,。分组中目录基本都是公用的。
如果后台单独定义的话,需要再目录下新建一个Admin目录之后在新建一个文件来存放eg(Common/Admin/function.php:这就是专属于后台的函数文件)。
(2)或者你想让网站结构简单点,可以配置成独立分组
'APP_GROUP_MODE' => 1, //0:为普通分组;1:独立分组 'APP_GROUP_LIST'=>'', 'APP_GROUP_PATH'=>'Moudles', //独立文件夹名称
- (三)关于如何隐藏地址栏中的index.php,请链接:http://www.cnblogs.com/lmei/p/3370006.html。