[置顶] ThinkPHP框架总结之基础及使用

ThinkPHP(当前版本:v3.2.3)框架总结之环境配置及说明:

 

对于TP框架,我想大家应该知道它的广泛性了,在这里不再进行说明。下面我就从TP的获取、目录结构、入口文件、使用及相关说明为例进行说明。

 

一、如何获取

获取TP的方式有很多,但我建议可直接从官网(http://www.thinkphp.cn)中获得最新稳定的版本,同时也可以实时关注最新的动态变化哦。

 

二、目录结构

解压获得的TP压缩包后,默认的结构目录结构如下:

[置顶] ThinkPHP框架总结之基础及使用_第1张图片

我们可以定制自己的项目目录结构,我的目录结构如下:

[置顶] ThinkPHP框架总结之基础及使用_第2张图片

我这里说明下:这个结构保持了默认的目录结构,对于应用目录(Project)中包含了四个模块:Admin、Mobile、WebSite及Wxapp,而Common目录主要是存放四个模块通用的资源及配置的;而Public目录很明显是放置整个项目通用资源的,一般存放的是html页面的css和js以及图片等。ThinkPHP目录是TP的框架类库,具体的说明如下:

[置顶] ThinkPHP框架总结之基础及使用_第3张图片

 

三、入口文件

这个文件不建议放太多操作,而且整个项目统一一个入口,所有应用都是从这个入口进入的,并且不同应用入口文件是类似的。文件主要定义调试模式、应用入口以及系统常量,针对我的项目结构目录配置如下:

[置顶] ThinkPHP框架总结之基础及使用_第4张图片

这个入口文件很简单,开启了调试模式(正式发布建议关闭),重新设置了入口目录为Project,同时也引入了核心的ThinkPHP类库。

 

四、简单使用

我们知道TP框架使用了MVC 架构模式,分为模式、视图及控制器,下面我们按结构介绍,最后会以一个从前端html页面访问TP接口,请求mysql数据库为例演示TP的使用,这里不对MVC架构进行说明。

模型:

<?php

namespace Mobile\Model;

use Think\Model;

 

class UserInfoModelextendsModel {

     protected $tureTableName ='user_info';

}

?>

存放位置/Project/Mobile/Model/UserInfoModel.class.php

注意:$tureTableName是规定的写法,它对一个数据库表user_info,具体的UserInfoModel命名请查看下面相关说明部分,而namespace我们知道当前版本的TP引入了命名空间机制(规定写法),use 代表使用Think类库下的Model模块功能,下同,当然,在mysql中也新增了一张t_user_info数据表。

 

控制器:

<?php

namespace Mobile\Controller;

use Think\Controller;

 

class UserCenterControllerextendsController {

     // 用户登录接口

     public function login() {

          $result= array();

          $data= array();

          $status= false;

          $msg= "";

         

          $account= I('post.account');

          $password= I('post.password');

         

          if(is_null($account) || is_null($password)) {

               $msg= '用户账号或密码不能为空,请检查重新输入!';

          }else {

               // 查找账号及密码看是否匹配

               $User= D('UserInfo');

               $password= md5($password);

               $data= $User->where('account="%s"and password="%s"',array($account,$password))->find();

               if($data !==null) {

                     $status= true;

               }else {

                     $msg= '用户账号或密码不正确!';

               }

          }

         

          $result['status'] = $status;

          $result['msg'] = $msg;

          $result['data'] = $data;

          echo json_encode($result);

     }

}

?>存放位置/Project/Mobile/Controller/UserInfoController.class.php

注意:建议使用I函数获取输入的参数值。

 

视图:

<!DOCTYPEhtml>

<html>

<head>

<metacharset="UTF-8">

<scriptsrc="__PUBLIC__/htmls/js/jquery-1.8.3.min.js"></script>

<linkrel="stylesheet"href="__PUBLIC__/htmls/css/company/company.css"/>

</head>

<bodystyle="background-color:#9999;">

     <formid="company-add"method='post'action="http://127.0.0.1/Mobile/UserCenter/login"enctype="multipart/form-data">

          <divstyle="width:400px"class="company_box">

               <tablewidth="100%"border="0"cellspacing="0"cellpadding="0">

                     <tr>

                          <td><div>

                                    用户名:

                               </div></td>

                          <td><inputclass="left"name="no"id="no"></input></td>

                     </tr>

                     <tr>

                          <td><div>

                                    密 码:

                               </div></td>

                          <td><inputclass="left"name="name"id="name"></input></td>

                     </tr>

               </table>

               <div><inputclass="right"type="button"value="登录"></input></div>

          </div>

     </form>

</body>

</html>

存放位置/Project/Mobile/View/UserCenter/userInfo.html

注意:在视图中需要新建一个与控制器同名的文件目录UserCenter,然后在它里面新建一userInfo.html即可访问显示,否则提示找不到页面。另外,在标签form中的action值为请求的接口的值,请求之后的结果为返回的json数据,具体如下所示:

点击登录按钮请求接口,并返回json结果:

{"status":true,"msg":"","data":{"id":"1","account":"cwteam","password":"e10adc3949ba59abbe56e057f20f883e","nickname":"\u884c\u4e91\u6d41\u6c34","mobile":"18217752902","token":"09bd38b8a33a92a93d949a1b02fb82b2","createtime":"2015-12-1814:15:22"}}

 

好了,本片文章就到这里,有不清楚的地方请在评论或技术群中讨论,谢谢。

 

技术群:489451956

 

相关说明:

环境要求:

1、        支持Unix/Windows服务器环境

2、        支持Apache、IIS及Nginx多种WEB服务器

3、        支持Mysql、Oracle、Sqlite、MsSql等多种数据库

 

集成工具:

我们可以使用xampp、phpstudy、wamp等集成工具来方便管理php,apache及数据库间的组合使用。

 

命名规范:

• 类文件都是以.class.php为后缀(这里是指的ThinkPHP内部使用的类库文件,不代表外部加载的类库文件),使用驼峰法命名,并且首字母大写,例如DbMysql.class.php

• 类的命名空间地址和所在的路径地址一致,例如Home\Controller\UserController类所在的路径应该是Application/Home/Controller/UserController.class.php

• 确保文件的命名和调用大小写一致,是由于在类Unix系统上面,对大小写是敏感的(而ThinkPHP在调试模式下面,即使在Windows平台也会严格检查大小写);

• 类名和文件名一致(包括上面说的大小写一致),例如UserController类的文件命名是UserController.class.php, InfoModel类的文件名是InfoModel.class.php, 并且不同的类库的类命名有一定的规范;

• 函数、配置文件等其他类库文件之外的一般是以.php为后缀(第三方引入的不做要求);

• 函数的命名使用小写字母和下划线的方式,例如get_client_ip

• 方法的命名使用驼峰法,并且首字母小写或者使用下划线“_”,例如getUserName_parseType,通常下划线开头的方法属于私有方法;

• 属性的命名使用驼峰法,并且首字母小写或者使用下划线“_”,例如tableName_instance,通常下划线开头的属性属于私有属性;

• 以双下划线“__”打头的函数或方法作为魔法方法,例如__call__autoload

• 常量以大写字母和下划线命名,例如HAS_ONEMANY_TO_MANY

• 配置参数以大写字母和下划线命名,例如HTML_CACHE_ON

• 语言变量以大写字母和下划线命名,例如MY_LANG,以下划线打头的语言变量通常用于系统语言变量,例如_CLASS_NOT_EXIST_

• 对变量的命名没有强制的规范,可以根据团队规范来进行;

• ThinkPHP的模板文件默认是以.html为后缀(可以通过配置修改);

数据表和字段采用小写加下划线方式命名,并注意字段名不要以下划线开头,例如think_user表和user_name字段是正确写法,类似_username这样的数据表字段可能会被过滤。

 

开发建议:

• 遵循框架的命名规范和目录规范;

• 开发过程中尽量开启调试模式,及早发现问题;

• 多看看日志文件,查找隐患问题;

• 养成使用I函数获取输入变量的好习惯;

• 更新或者环境改变后遇到问题首要问题是清空Runtime目录;

 

 

 

你可能感兴趣的:(thinkphp)