ThinkPHP(当前版本:v3.2.3)框架总结之环境配置及说明:
对于TP框架,我想大家应该知道它的广泛性了,在这里不再进行说明。下面我就从TP的获取、目录结构、入口文件、使用及相关说明为例进行说明。
一、如何获取
获取TP的方式有很多,但我建议可直接从官网(http://www.thinkphp.cn)中获得最新稳定的版本,同时也可以实时关注最新的动态变化哦。
二、目录结构
解压获得的TP压缩包后,默认的结构目录结构如下:
我们可以定制自己的项目目录结构,我的目录结构如下:
我这里说明下:这个结构保持了默认的目录结构,对于应用目录(Project)中包含了四个模块:Admin、Mobile、WebSite及Wxapp,而Common目录主要是存放四个模块通用的资源及配置的;而Public目录很明显是放置整个项目通用资源的,一般存放的是html页面的css和js以及图片等。ThinkPHP目录是TP的框架类库,具体的说明如下:
三、入口文件
这个文件不建议放太多操作,而且整个项目统一一个入口,所有应用都是从这个入口进入的,并且不同应用入口文件是类似的。文件主要定义调试模式、应用入口以及系统常量,针对我的项目结构目录配置如下:
这个入口文件很简单,开启了调试模式(正式发布建议关闭),重新设置了入口目录为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_ONE和MANY_TO_MANY;
• 配置参数以大写字母和下划线命名,例如HTML_CACHE_ON;
• 语言变量以大写字母和下划线命名,例如MY_LANG,以下划线打头的语言变量通常用于系统语言变量,例如_CLASS_NOT_EXIST_;
• 对变量的命名没有强制的规范,可以根据团队规范来进行;
• ThinkPHP的模板文件默认是以.html为后缀(可以通过配置修改);
数据表和字段采用小写加下划线方式命名,并注意字段名不要以下划线开头,例如think_user表和user_name字段是正确写法,类似_username这样的数据表字段可能会被过滤。
开发建议:
• 遵循框架的命名规范和目录规范;
• 开发过程中尽量开启调试模式,及早发现问题;
• 多看看日志文件,查找隐患问题;
• 养成使用I函数获取输入变量的好习惯;
• 更新或者环境改变后遇到问题首要问题是清空Runtime目录;