ThinkPHP第二课 框架MVC目录和URL访问方式

第二课 框架MVC目录和URL访问方式

1.说明:

ThinkPHP是基于MVC的框架,认识框架目录将更好的实现分层,掌握ThinkPHPURL访问就是访问框架的控制器(MVC中的C),共有四种方式,框架中的C起到分模块的作用

url4种访问方式:

1.PATHINFO 模式 -- 重点!!!!!!

http://域名/项目名/入口文件/模块名/方法名/1/1/2/2

2.普通模式

http://域名/项目名/入口文件?m=模块名&a=方法名&1=1&2=2

3.REWRITE模式

http://域名/项目名/模块名/方法名/1/1/2/2

4.兼容模式

http://域名/项目名/入口文件?s=模块名/方法名/1/1/2/2

2.核心内容:

一.ThinkPHP框架对应MVC目录

V(视图层):thinkphp\Home\Tpl

M(模型层):thinkphp\Home\Lib\Model

C(控制器):thinkphp\Home\Lib\Action

二.URL访问方式(4种)

(1)入口文件全名+控制器类前缀名+控制器核心方法名

thinkphp/index.php/Index/indexPATHINFO方式)



(2)普通模式

  

3REWRITE模式

4)兼容模式

三.应用配置


3.工程实例:  

传参访问控制器实例(键值对)


4.文件路径:

5.遇到的问题: 

6.文档:

ThinkPHPconfig.php详细配置文件介绍 

<?php

return array(

//模版配置
//------------------------------------------------------------------------------
"TMPL_DETECT_THEME"   =>  false ,   //自动侦测模板主题 
"TMPL_TEMPLATE_SUFFIX"=>'.html',    //默认模板文件后缀
"TMPL_CACHFILE_SUFFIX"=>'.php',     //默认模板缓存后缀
"TMPL_PARSE_STRING"   => '',        //模板引擎要自动替换的字符串,必须是数组形式。例如 array('__MYPATH__'=>Lib_PATH,...) 
"TMPL_ACTION_ERROR"   =>'Public:error',    //错误跳转模板文件 
"TMPL_ACTION_SUCCESS" =>'Public:success', //成功跳转模板文件 
"TMPL_TRACE_FILE"     =>THINK_PATH.'/Tpl/PageTrace.tpl.php',   //页面Trace的模板文件 
"TMPL_EXCEPTION_FILE" =>THINK_PATH.'/Tpl/ThinkException.tpl.php',  //异常页面的模板文件 
"TMPL_ENGINE_TYPE"    => 'Think',    //默认模板引擎 
//以下设置仅对使用Think模板引擎有效 
"TMPL_DENY_FUNC_LIST" =>'echo,exit',  //模板引擎禁用函数 
"TMPL_L_DELIM"        =>'{',    //模板引擎普通标签开始标记 
"TMPL_R_DELIM"        =>'}',    //模板引擎普通标签结束标记 
"TMPL_VAR_IDENTIFY"   =>'array',    //模板变量识别 留空自懂判断 array 数组 obj 对象 
"TMPL_FILE_DEPR"      =>'/',     //模板文件MODULE_NAMEACTION_NAME之间的分割符,只对项目分组部署有效 
"TMPL_STRIP_SPACE"    =>false,    //是否去除模板文件里面癿html空格不换行 
"TMPL_CACHE_ON"       =>true,    //默认开启模板编译缓存 false 的话每次都重新编译模板 
"TMPL_CACHE_TIME"     => -1,     //模板缓存有效期 -1 永久 单位为秒 
"TAGLIB_BEGIN"        =>'<',     //标签库标签开始标记 
"TAGLIB_END"          =>'>',     //标签库标签结束标记 
"TAGLIB_BUILD_IN"     =>'cx',    //内置标签库名称 可以添加自己的标签库,多个使用逗号分隔 
"TAGLIB_PRE_LOAD"     =>'',   //预先加载的标签库,无需在每个模板使用 taglib标签加载, 多个使用逗号分隔
"TAG_NESTED_LEVEL"    =>3     //标签嵌套级别

//-------------------------------------------------------------------------
//应用配置
//------------------------------------------------------------------------------
"APP_GROUP_DEPR"      =>'.',  //模块分组之间的分割符
"APP_GROUP_LIST"      =>'',   //项目模块分组列表,多个组之间用逗号分隑,例如 'Admin,Home'
"APP_CONFIG_LIST"     =>array('taglibs','routes','tags','htmls','modules','actions'),  //项目扩展配置文件列表
"APP_DOMAIN_DEPLOY"   =>false,    //是否使用独立域名部署项目,只有在项目目录本身就是网站根目录的情况下开启

//-------------------------------------------------------------------------
//URL配置
//------------------------------------------------------------------------------
"URL_MODEL"           =>1,   //URL模式: 普通模式 1 PATHINFO 2 REWRITE 3 兼容模式 当URL_DISPATCH_ON开启后有效 
                             //默认为PATHINFO 模式,提供最好的用户体验和 SEO支持 
        
"URL_PATHINFO_MODEL"  =>2,   //PATHINFO 模式,默认采用智能模式 
                             //普通模式参数没有顺序/m/module/a/action/id/1 
                             //智能模式制动识别模块和操作/module/action/id/1/ 或者 /module,action,id,1/...
        
"URL_PATHINFO_DEPR"   =>'/', //PATHINFO参数之间分割号 
"URL_ROUTER_ON"       =>true,   //是否开启URL路由 
"URL_HTML_SUFFIX"     =>'.av',   //伪静态后缀设置,例如 .shtml 
"URL_CASE_INSENSITIVE"  =>false, //URL是否不区分大小写,默认区分大小写


//------------------------------------------------------------------------------
//日志配置
//------------------------------------------------------------------------------
"LOG_RECORD"          =>false,  //是否记录网站日志,默认不记录日志 
"LOG_RECORD_LEVEL"    =>array('EMERG','ALERT','CRIT','ERR'),  //允许记录的日志级别
"LOG_FILE_SIZE"       =>2097152,  //日志文件大小限制, 针对文件方式的日志记录,超过会自动生成备份文件


//------------------------------------------------------------------------------
//错误配置
//------------------------------------------------------------------------------
"ERROR_MESSAGE"       =>'您浏览的页面暂时发生了错误!请稍后再试~',   //错误显示信息 非调试模式有效 
"ERROR_PAGE"          =>'',  //错误定向页面,需要填写完整的URL地址


//------------------------------------------------------------------------------
//数据库配置
//------------------------------------------------------------------------------
"DB_CHARSET"          =>'utf8',   //数据库编码,默认采用 utf8 
"DB_DEPLOY_TYPE"      =>0,        //数据库部署方式 :集中式(单一朋务器) 分布式(主从朋务器) 
"DB_RW_SEPARATE"      =>false,    //数据库读写是否分离,分布式数据库方式下面有效 
"DB_FIELDS_CACHE"     =>true,     //开启数据表字段缓存 
"DB_TYPE"             =>'mysql',  //数据库类型 
"DB_HOST"             =>'localhost',  //数据库服务器地址
"DB_NAME"             =>'',       //数据库名称 
"DB_USER"             =>'root',   //数据库用户名 
"DB_PWD"              =>'',       //数据库 密码 
"DB_PORT"             =>3306,     //数据库使用的端口 
"DB_PREFIX"           =>'think_', //数据库癿表前缀 
"DB_SUFFIX"           =>'',       //数据库的表后缀 
"DB_FIELDTYPE_CHECK"  =>false,    //是否迕行字段类型检查


//------------------------------------------------------------------------------
//静态缓存配置
//------------------------------------------------------------------------------
"HTML_FILE_SUFFIX"    =>'.shtml',  //默认静态文件后缀 
"HTML_CACHE_ON"       =>false,     //默认关闭静态缓存 
"HTML_CACHE_TIME"     =>60,        //静态缓存有效期 
"HTML_READ_TYPE"      =>1,         //静态缓存读取方式 0 readfile 1 redirect


//------------------------------------------------------------------------------
//数据缓存配置
//------------------------------------------------------------------------------
"DATA_CACHE_TYPE"     =>'File',     //数据缓存类型 支持 File Db Apc Memcache Shmop Sqlite Xcache Apachenote Eaccelerator 
"DATA_CACHE_PATH"     =>TEMP_PATH   //缓存路径设置 (仅对File方式缓存有效
"DATA_CACHE_TIME"     =>-1,         //数据缓存有效期 
"DATA_CACHE_COMPRESS" =>false,      //数据缓存是否压缩缓存 
"DATA_CACHE_CHECK"    =>false,      //数据缓存是否校验缓存 
"DATA_CACHE_SUBDIR"   =>false,      //使用子目录缓存 (自动根据缓存标识的哈希创建子目录
"DATA_PATH_LEVEL"     =>1,          //子目录缓存级别


//------------------------------------------------------------------------------
//运行时间配置
//------------------------------------------------------------------------------
"SHOW_RUN_TIME"       =>false,      //运行时间显示 
"SHOW_ADV_TIME"       =>false,      //显示详细的运行旪间,SHOW_RUN_TIME开启后有效 
"SHOW_DB_TIMES"       =>false,      //显示数据库读写次数 
"SHOW_CACHE_TIMES"    =>false,      //显示缓存读写次数 
"SHOW_USE_MEM"        =>false,      //显示内存开销 
"SHOW_PAGE_TRACE"     =>false,      //显示页面Trace信息 由 Trace文件定义和Action操作赋值 
"SHOW_ERROR_MSG"      =>true,       //发生错误时显示错误信息


//------------------------------------------------------------------------------
//Cookie设置
//------------------------------------------------------------------------------
"COOKIE_EXPIRE"       =>3600,       //Coodie有效期 
"COOKIE_DOMAIN"       =>'',         //Cookie有效域名 
"COOKIE_PATH"         =>'/',        //Cookie路径 
"COOKIE_PREFIX"       =>'',         //Cookie前缀 避免冲突

 

//-------------------------------------------------------------------------
//令牌验证配置
//------------------------------------------------------------------------------
"TOKEN_ON"            =>true,       //是否开启令牌验证 
"TOKEN_NAME"          =>'__hash__', //令牌验证的表单隐藏字段名称 
"TOKEN_TYPE"          =>'md5',      //令牌验证哈希规则


//------------------------------------------------------------------------------
//默认值配置
//------------------------------------------------------------------------------
"DEFAULT_APP"         =>'@',      //默认模型类所在的项目名称 表示当前项目 
"DEFAULT_GROUP"       =>'Home',   //默认分组 
"DEFAULT_MODULE"      =>'Index',  //默认模块名称 
"DEFAULT_ACTION"      =>'index',  //默认操作名称 
"DEFAULT_THEME"       =>'default',//默认模板主题名称 
"DEFAULT_LANG"        =>'zh-cn',  //默认语言 
"DEFAULT_TIMEZONE"    =>'PRC',    //默认时区 
"DEFAULT_AJAX_RETURN" =>'JSON',   //AJAX 数据返回格式 JSON XML ... 
"DEFAULT_CHARSET"     =>'utf-8',  //默认页面输出编码


//------------------------------------------------------------------------------
//系统变量配置
//------------------------------------------------------------------------------
//下面这些变量配置主要用于URL的特殊传值,在项目中的URL和表单参数尽量不要与之冲突,否则容易造成错误。 
"VAR_PATHINFO"        =>'s',   //PATHINFO 兼容模式获取变量例如 ?s=/module/action/id/1  
"VAR_GROUP"           =>'g',   //默认分组发量 
"VAR_ROUTE"           =>'r',   //默认路由获取变量 
"VAR_MODULE"          =>'m',   //默认模块获取变量 
"VAR_ACTION"          =>'a',   //默认操作获取变量 
"VAR_PAGE"            =>'p',   //默认分页跳转变量 
"VAR_TEMPLATE"        =>'t',   //默认模板切换变量
"VAR_LANGUAGE"        =>'l',   //默认语言切换变量 
"VAR_AJAX_SUBMIT"     =>'ajax',  //默认的AJAX提交变量

 

//-------------------------------------------------------------------------
//语言和时区
//------------------------------------------------------------------------------
"LANG_SWITCH_ON"      => false   //是否开启多语言功能,默认关闭

);
?>

+------------------------------------------------------------------- | 感谢您使用ThinkPHP开发框架 ^_^ +------------------------------------------------------------------- | 大道至简 开发由我 WE CAN DO IT,JUST THINK +------------------------------------------------------------------- | 版本信息:ThinkPHP 3.1 Release 2012/9/5 +------------------------------------------------------------------- | Copyright(c) 2006-2012 http://thinkphp.cn All rights reserved. +------------------------------------------------------------------- [ 简介 ] ThinkPHP 是一个免费开源的,快速、简单的面向对象的 轻量级PHP开发框架, 遵循Apache2开源协议发布,是为了敏捷WEB应用开发和简化企业应用开发而 诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性 能和至简的代码的同时,也注重易用性。并且拥有众多的原创功能和特性,在 社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和改进,众多 的典型案例确保可以稳定用于商业以及门户级的开发。 经过6年的不断积累和重构,3.0版本在框架底层的定制和扩展方面趋于完善, 使得应用的开发范围和需求适应度更加扩大,能够满足不同程度的开发人员的 需求。而且引入了全新的CBD(核心+行为+驱动)架构模式,旨在打造DIY框架 和AOP编程体验,让ThinkPHP能够在不同方面都能快速满足项目和应用的需求, 并且正式引入SAE、REST和Mongo支持。 使用ThinkPHP,你可以更方便和快捷的开发和部署应用。当然不仅仅是企业级 应用,任何PHP应用开发都可以从ThinkPHP的简单和快速的特性中受益。 ThinkPHP本身具有很多的原创特性,并且倡导大道至简,开发由我的开发理念, 用最少的代码完成更多的功能,宗旨就是让WEB应用开发更简单、更快速。 为此ThinkPHP会不断吸收和融入更好的技术以保证其新鲜和活力,提供WEB应 用开发的最佳实践!经过6年来的不断重构和改进,ThinkPHP达到了一个新的 阶段,能够满足企业开发中复杂的项目需求,足以达到企业级和门户级的开 发标准。 [ 协议 ] ThinkPHP遵循Apache2开源许可协议发布,意味着你可以免费使用ThinkPHP, 甚至允许把你的ThinkPHP应用采用商业闭源发布。 具体参考LICENSE.txt内容 [ 特性 ] CBD架构:ThinkPHP3.0版本引入了全新的CBD(核心+行为+驱动)架构模式, 打造框架底层DIY定制和类AOP编程体验。利用这一新的特性,开发人员可以 方便地通过模式扩展为自己量身定制一套属于自己或者企业的开发框架。 编译机制:独创的项目编译机制,有效减少OOP开发中文件加载的性能开销。 改进后的项目编译机制,可以支持编译文件直接作为入口载入,并且支持常量 外部载入,利于产品发布。 类库导入:采用基于类库包和命名空间的方式导入类库,让类库导入看起来更 加简单清晰,而且还支持自动加载和别名导入。为了方便项目的跨平台移植, 系统还可以严格检查加载文件的大小写。 URL和路由:系统支持普通模式、PATHINFO模式、REWRITE模式和兼容模式的 URL方式,支持不同的服务器和运行模式的部署,配合URL路由功能,让你随心 所欲的构建需要的URL地址和进行SEO优化工作。支持灵活的规则路由和正则路 由,以及路由重定向支持,带给开发人员更方便灵活的URL优化体验。 调试模式:框架提供的调试模式可以方便用于开发过程的不同阶段,包括开发、 测试和演示等任何需要的情况,不同的应用模式可以配置独立的项目配置文件。 只是小小的性能牺牲就能满足调试开发过程中的日志和分析需要,并确保将来的 部署顺利,一旦切换到部署模式则可以迅速提升性能。 ORM :简洁轻巧的ORM实现,配合简单的CURD以及AR模式,让开发效率无处不在。 数据库:支持包括Mysql、Sqlite、Pgsql、Oracle、SqlServer、Mongo等数据库, 并且内置分布式数据库和读写分离功能支持。系统支持多数据库连接和动态切换 机制,犹如企业开发的一把利刃,跨数据库应用和分布式支持从此无忧。 查询语言:内建丰富的查询机制,包括组合查询、快捷查询、复合查询、区间 查询、统计查询、定位查询、多表查询、子查询、动态查询和原生查询,让你的 数据查询简洁高效。 动态模型:无需创建任何对应的模型类,轻松完成CURD操作,支持多种模型之间 的动态切换,让你领略数据操作的无比畅快和最佳体验。 扩展模型:提供了丰富的扩展模型,包括:支持序列化字段、文本字段、只读字 段、延迟写入、乐观锁、数据分表等高级特性的高级模型;可以轻松动态地创建 数据库视图的视图模型;支持关联操作的关联模型;支持Mongo数据库的Mongo模 型等等,都可以方便的使用。 模块分组:不用担心大项目的分工协调和部署问题,分组帮你解决跨项目的难题, 还可以支持对分组的二级域名部署支持。 模板引擎:系统内建了一款卓越的基于XML的编译型模板引擎,支持两种类型的 模板标签,融合了Smarty和JSP标签库的思想,并内置布局模板功能和标签库扩展 支持。通过驱动还可以支持Smarty、EaseTemplate、TemplateLite、Smart等其他第 三方模板引擎。 AJAX支持:内置和客户端无关的AJAX数据返回方法,支持JSON、XML和EVAL类型 返回客户端,而且可以扩展返回数据格式,系统不绑定任何AJAX类库,可随意使 用自己熟悉的AJAX类库进行操作。 SAE支持:提供了新浪SAE平台的强力支持,具备“横跨性”和“平滑性”,支持本地化 开发和调试以及部署切换,让你轻松过渡到SAE开发,打造全新的SAE开发体验。 RESTFul支持:REST模式提供了RESTFul支持,为你打造全新的URL设计和访问体验, 同时为接口应用提供了支持。 多语言支持:系统支持语言包功能,项目和分组都可以有单独的语言包,并且可以 自动检测浏览器语言自动载入对应的语言包。 模式扩展:除了标准模式外,还提供了AMF、PHPRpc、Lite、Thin和Cli模式扩展支 持,针对不同级别的应用开发提供最佳核心框架,还可以自定义模式扩展。 自动验证和完成:自动完成表单数据的验证和过滤,新版新增了IP验证和有效期验 证等更多的验证方式,配合自动完成可以生成安全的数据对象。 字段类型检测:系统会自动缓存字段信息和字段类型,支持非法字段过滤和字段类 型强制转换,确保数据写入和查询更安全。 缓存机制:系统支持包括文件方式、APC、Db、Memcache、Shmop、Sqlite、Redis、 Eaccelerator和Xcache在内的动态数据缓存类型,以及可定制的静态缓存规则,并 提供了快捷方法进行存取操作。 扩展机制:系统支持包括模式扩展、行为扩展、类库扩展、驱动扩展、模型扩展、 控制器扩展、Widget扩展在内的强大灵活的扩展机制,让你不再受限于核心的不足 和无所适从,随心DIY自己的框架和扩展应用,满足企业开发中更加复杂的项目需求。 [ 要求 ] ThinkPHP3.1需要PHP5.2.0以上版本支持,可以运行在任何系统环境下面。 [ 安装 ] ThinkPHP无需安装,下载ThinkPHP核心包或者完整版之后,把解压后的目录拷贝到 你的WEB服务器或者WEB目录即可。 [ 鸣谢 ] 特别要鸣谢ThinkPHP团队和所有关注和支持ThinkPHP的用户。 [ 支持 ] 更多内容和支持请访问ThinkPHP官方网站http://thinkphp.cn/ 和论坛 http://bbs.thinkphp.cn。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值