主页 > 后端 > thinkphp教程 >
来源:自学PHP网 时间:2014-11-28 23:17 作者: 阅读:次
[导读] 1 缓存修改模版时要注意及时删除缓存,否则不能立即生效。2 命名规范类文件以 class php为后缀,驼峰法命名,并且首字母大写,例如DbMysq...
关于thinkphp1. 缓存 修改模版时要注意及时删除缓存,否则不能立即生效。 2.命名规范 类文件以.class.php为后缀,驼峰法命名,并且首字母大写,例如DbMysql.class.php。 函数、配置文件等其他类库文件之外的一般是以.php为后缀(第三方引入的不做要求)。 类名和文件名一致,例如 UserAction类的文件命名是UserAction.class.php, InfoModel类的文件名是InfoModel.class.php, 函数的命名使用小写字母和下划线的方式,例如 get_client_ip Action控制器类以Action为后缀,例如 UserAction、InfoAction 模型类以Model为后缀,例如UserModel、InfoModel 方法的命名使用驼峰法,并且首字母小写,例如 getUserName 属性的命名使用驼峰法,并且首字母小写,例如 tableName 以双下划线“__”打头的函数或方法作为魔法方法,例如 __call 和 __autoload 常量以大写字母和下划线命名,例如 HAS_ONE和 MANY_TO_MANY 配置参数以大写字母和下划线命名,例如HTML_CACHE_ON 语言变量以大写字母和下划线命名,例如MY_LANG,以下划线打头的语言变量通常用于系统语言变量,例如 _CLASS_NOT_EXIST_。 数据表和字段采用小写加下划线方式命名,例如 think_user 和 user_name 特例:在ThinkPHP里面,单字母大写函数,通常是某些操作的快捷定义,或者有特殊的作用。例如,ADSL方法等等 3.配置 ThinkPHP提供了灵活的全局配置功能,采用最有效率的PHP返回数组方式定义,支持惯例配置、项目配置、调试配置和模块配置 惯例配置:系统内置有一个惯例配置文件(位于ThinkCommonconvention.php),按照大多数的使用对常用参数进行了默认配置。 项目配置:项目配置文件位于项目的配置文件目录(默认是Conf)下面,文件名是config.php。 调试配置:如果启用了调试模式的话,那么会导入框架默认的调试配置文件,默认的调试配置文件位于ThinkCommondebug.php。自定义项目配置文件位于conf/debug.php 分组配置:分组配置用于系统启用了分组模式的情况之下,对于每个分组可以单独定义自己的配置文件。分组配置文件位于:项目配置目录/分组名称/config.php 模块配置: ThinkPHP支持对某些参数进行动态配置,针对这一特性,ThinkPHP还特别引入了模块配置文件的支持,这其实也是动态配置的体现。 模块配置文件位于: 项目配置目录/模块名(小写)_config.php // 用于不使用分组的情况 或者 项目配置目录/分组名/模块名(小写)_config.php // 用于使用分组的情况 读取配置:定义了配置文件之后,可以使用系统提供的C方法来读取已有的配置: C('参数名称') // 获取已经设置的参数值 动态配置:在具体的Action方法里面,我们仍然可以对某些参数进行动态配置,主要是指那些还没有被使用的参数。 C('参数名称','新的参数值'); 扩展配置:惯例配置如下 'APP_CONFIG_LIST' => array('taglibs','routes','htmls','modules','actions','tags'), 4.模块和操作 4.1基础 每个模块是一个Action文件,类似于我们平常所说的控制器,系统会自动寻找项目类库Action目录下面的相关类,如果没有找到,则会定位到空模块,否则抛出异常。 而actionName操作是首先判断是否存在Action类的公共方法,如果不存在则会继续寻找父类中的方法,如果依然不存在,就会寻找是否存在自动匹配的模版文件。如果存在模版文件,那么就直接渲染模版输出。 因此应用开发中的一个重要过程就是给不同的模块定义具体的操作。一个应用如果不需要和数据库交互的时候可以不需要定义模型类,但是必须定义Action控制器。 4.2 默认模块 系统的默认模块设置是Index模块,默认操作设置是index操作 4.3 模块分组 模块分组功能是为了更好的组织已有的模块,并且增加项目容量的一个有效机制。分组功能可以把以往的多项目合并到一个项目中去,这样一来,之前需要采用跨项目 操作的地方,现在因为在一个项目中从而免去了不少麻烦,并且公共文件的重用也方便了,并且每个分组都可以有自己独立的配置文件、公共文件、语言包,在 URL的访问上面也非常清晰。 要启用分组模块非常简单,配置下APP_GROUP_LIST参数和DEFAULT_GROUP参数即可。 例如我们把当前的项目分成Home和Admin两个组,分别表示前台和后台功能 'APP_GROUP_LIST'=>'Admin,Home', 'DEFAULT_GROUP'=>'Home', 4.3 URL模式 ThinkPHP支持四种URL模式,可以通过设置URL_MODEL参数来定义,包括普通模式、PATHINFO、REWRITE和兼容模式。 URL_MODEL 为0,采用传统的URL参数模式,http://<serverName>/appName/?m=module&a=action&id=1 URL_MODEL 为1,默认情况使用PATHINFO模式,ThinkPHP内置强大的PATHINFO支持,提供灵活和友好URL支持。PATHINFO模式根据不同的设置还包括普通模式和智能模式两种: 普通模式 设置URL_PATHINFO_MODEL 参数为1 ,该模式下面URL参数没有顺序,例如 http://<serverName>/appName/m/module/a/action/id/1 http://<serverName>/appName/a/action/id/1/m/module 以上URL等效 智能模式 设置URL_PATHINFO_MODEL 参数为2 (系统默认的模式),自动识别模块和操作,例如 URL_MODEL 为2,REWRITE模式,该URL模式和PATHINFO模式功能一样,除了可以不需要在URL里面写入口文件,和可以定义.htaccess 文件外。在开启了Apache的URL_REWRITE模块后,就可以启用REWRITE模式了,具体参考下面的URL重写部分。 URL_MODEL 为3,兼容模式,兼容模式是普通模式和PATHINFO模式的结合,并且可以让应用在需要的时候直接切换到PATHINFO模式而不需要更改模板和程序。兼容模式URL可以支持任何的运行环境。 4.4 URL路由 4.5 URL伪静态 系统支持伪静态URL设置,可以通过设置URL_HTML_SUFFIX参数随意在URL的最后增加你想要的静态后缀,而不会影响当前操作的正常执行。例如,我们设置URL_HTML_SUFFIX 为 .shtml 的话,我们可以把下面的URL http:///Blog/read/id/1 变成 http:///Blog/read/id/1.shtml 4.6 URL重写 通常的URL里面含有index.php,为了达到更好的SEO效果可能需要去掉URL里面的index.php ,通过URL重写的方式可以达到这种效果,通常需要服务器开启URL_REWRITE模块才能支持。 下面是Apache的配置过程,可以参考下: 1、httpd.conf配置文件中加载了mod_rewrite.so模块 2、AllowOverride None 将None改为 All 3、确保URL_MODEL设置为2 4、把.htaccess文件放到入口文件的同级目录下
4.7 URL生成 为了配合所使用的URL模式,我们需要能够动态的根据当前的URL设置生成对应的URL地址,为此,ThinkPHP内置提供了U方法,用于URL的动态生成,可以确保项目在移植过程中不受环境的影响。 4.8 URL大小写 系统本身已经提供了一个很好的解决方案,可以通过配置简单实现。只要在项目配置中,增加: 'URL_CASE_INSENSITIVE' => true 就可以实现URL访问不再区分大小写了。 4.9 空操作 空操作是指系统在找不到指定的操作方法的时候,会定位到空操作(_empty)方法来执行,利用这个机制,我们可以实现错误页面和一些URL的优化。
4.10 空模块 空模块的概念是指当系统找不到指定的模块名称的时候,系统会尝试定位空模块(EmptyAction),利用这个机制我们可以用来定制错误页面和进行URL的优化。 Class EmptyAction extends Action{ 4.11 前置和后置操作 前置和后置操作 系统会检测当前操作是否具有前置和后置操作,如果存在就会按照顺序执行,例如,我们在UserAction类里面定义了_before_insert() 和 _after_insert() 操作,那么执行User模块的insert操作的时候,会按照顺序执行下面的操作:
4.12操作链 ThinkPHP支持使用操作链的方式,例如,我们访问下面的URL:http://serverName/appName/User/action1:action2:action3/ 那么会依次执行UserAction的action1 action2 action3方法,并且当前操作名称是最后一个操作。在进行默认模板输出的时候会用到。如果确实需要在不同的操作方法中都进行输出,请确保在 Action的display方法中指定需要渲染的模板文件名。否则,只能输出最后的操作模板。使用了操作链后,前置和后置方法会失效。 4.13 跨模块调用 在开发过程中经常会在当前模块调用其他模块的方法,这个时候就涉及到跨模块调用,我们还可以了解到A和R两个快捷方法的使用。 $User = A("User"); // 实例化UserAction控制器对象 $User->importUser(); // 调用User模块的importUser操作方法 这里的A("User") 是一个快捷方法,和下面的代码等效:
事实上,在这个例子里面还有比A方法更简单的调用方法,例如: R("User","importUser"); // 远程调用UserAction控制器的importUser操作方法 上面只是在当前项目中调用,如果你有需要在多个项目之间调用方法,一样可以完成:
4.14 页面跳转 在应用开发中,经常会遇到一些带有提示信息的跳转页面,例如操作成功或者操作错误页面,并且自动跳转到另外一个目标页面,系统的Action类内置了两个跳转方法success和error,用于页面跳转提示,而且可以支持ajax提交,使用方法很简单,举例如下:
Success和error方法都有对应的模板,并且是可以设置的,默认的设置Public:success和Public:error,模板文件可以使用模板标签,并且可以使用下面的模板变量: $msgTitle :操作标题 $message :页面提示信息 $status :操作状态 1表示成功 0 表示失败 具体还可以由项目本身定义规则 $waitSecond :跳转等待时间 单位为妙 $jumpUrl :跳转页面地址 如果是AJAX方式提交的话,success和error方法会调用ajaxReturn方法返回信息,具体可以参考后面的AJAX返回部分。 4.15 重定向 Action类的redirect方法可以实现页面的重定向功能。 redirect方法的参数用法和U函数的用法一致(参考上面的URL生成部分),例如: $this->redirect('User/list', array('cate_id'=>2), 5,'页面跳转中~') 上面的用法是停留5秒后跳转到User模块的list操作,并且显示页面跳转中字样,重定向后会改变当前的URL地址。 4.16 AJAX返回 系统支持任何的AJAX类库,提供了ajaxReturn方法用于AJAX调用后返回数据给客户端。 并且支持JSON、XML和EVAL三种方式给客户端接受数据,通过配置DEFAULT_AJAX_RETURN进行设置,在选择不同的AJAX类库的时候可以使用不同的方式返回数据。 要使用ThinkPHP的ajaxReturn方法返回数据的话,需要遵守一定的返回数据的格式规范。ThinkPHP返回的数据格式包括: status 操作状态 info 提示信息 data 返回数据 返回数据data可以支持字符串、数字和数组、对象,返回客户端的时候根据不同的返回格式进行编码后传输。如果是JSON格式,会自动编码成JSON字符 串,如果是XML方式,会自动编码成XML字符串,如果是EVAL方式的话,只会输出字符串data数据,并且忽略status和info信息。 下面是一个简单的例子:
注意,确保你是使用AJAX提交才使用ajaxReturn方法。 在客户端接受数据的时候,根据使用的编码格式进行解析即可。 |
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com