Willdark

每一个不曾起舞的日子,都是对生命的辜负

ThinkPHP框架初体验

<前言>记录一下ThinkPHP框架学习的一些笔记,记下来的都是认为比较重要的内容,有不了解的可以用搜索引擎查询一下。

一、开发前了解

1.有些目录的注释
//commom 存放当前项目的公共函数
//Conf 存放当前项目的配置文件
//Lang 存放当前项目的语言包
//Lib 存放当前项目的控制器和模型
//Runtime 存放当前项目运行时的文件
//Tpl 存放当前项目的模板文件
//MC 存放于Lib
//V 存放于Tpl

2.ThinkPHP的运行流程
第一步:加载ThinkPHP.php
require(‘./ThinkPHP/ThinkPHP.php’);
第二步:加载核心文件 ./thinkPHP/LIB/core(旧版本,新版本是IndexControtroller.class.php文件)
第三步:加载项目的文件 分析URL 调用相关控制器

3.在ThinkPHP3.2版本自定义函数库common.php文件已经改名为function.php,具体的存放路径是Application->Common->Common->function.php,Tpl里的index.html文件改成了Home->View->Index->index.html

4.一般在Application文件里的IndexControtroller.class.php文件里编写数据和一些函数代码,然后在模板文件indexhtml里面进行输出。

二、开发过程

1.怎么在模板文件(index.html)里面使用for循环输出数据呢?比如说在控制器文件里IndexController.class.php里可以像正常那样来写输出。

for($i=1;$i<=10,$i++){
echo $i;
}

显然这些符号如<=在模板文件中并不能识别,先来了解一下模板文件里的一些小标志。
eq= neq!= gt> egt>= lt< elt<= heq=== nheq!==
那么在模板里要实现上面的for循环这样写:
//comparison为判断参数 属性值为上面的标志 不设置的默认值为小于

<for start=’1′ end=’10’ comparison=’elt’ name=’$k’>
{$k}
</for>

2.调试文件一般创建在Application->Common->Conf下,默认命名为debug.php,tp框架调试的方式:在debug.php里输入‘SHOW_PAGE_TRACE’=>true,开启调试栏工具,在调试栏查看调试的内容可在控制器文件里输入trace()方法,如:trace(‘name’,C(‘$name’));在调试栏输出name的值,利用G(‘run’)方法计算算法所用时间,如:

G(‘run’);
for($i=0;$i<1000;$i++){
$count+=$i;
}
echo G(‘run’,’end’);

可以在模板文件里输出该for循环计算所需要的时间(单位是毫秒)。

3.在tp3.2以后的版本如若想调用Application->Home->Controller下的IndexController.class.php里的自定义的方法。访问的url路径该怎么写?
比如说我里面有一个hello的自定义方法,那么他的访问url是:
http://127.0.0.1:8080/tpdemo/home/index/hello
(ps:tpdemo为项目的根文件夹)

4.进行数据库的连接和模型的实例化:
(1)配置数据库的信息,在Application->Common->Conf->config下进行数据库信息的配置,贴代码:

“DB_TYPE”=>”mysql”, //数据类型
“DB_HOST”=>”localhost”, //数据服务器地址
//连接多个服务器(主从)
//”DB_HOST”=>”localhost,localhost1,localhost2″,
“DB_NAME”=>”tpdemo”, //数据库名
“DB_USER”=>”root”, //数据库用户名
“DB_PWD”=>”root”, //数据库密码
“DB_PORT”=>”3306”, //数据库端口
“DB_PREFIX”=>”da_”, //数据库表前缀

(2)直接化模型的实例化,在控制文件IndexController.class.php下进行模型的实例化。测试查询语句。

$user = M(‘user’); //参数表名,表前缀,数据库连接信息,后两者已配置可省略。
$data = $user->select(); //查询语句
dump($data);

(ps:数据库配置与信息相对应,数据库地址为localhost不用加端口号,尽管你用的不是80端口)
(3)自定义模型的实例化,例如在Application->Home->Model下有一个自定义模型类UserModel.class.php,代码如下所示:

//以下两句为引用命名空间,tp3.2后必须添加,否则找不到该类。
namespace Home\Model;
use Think\Model;
class UserModel extends Model{
public function getinfo(){ //结构逻辑
return “Hello World”;
}
}

然后在控制类文件(IndexController.class.php)中实例化该类:

$user = new \Home\Model\UserModel();//必须添加\Home\Model该命名空间。
//$user = D(‘User’); //也可以使用系统的D方法进行实例化
echo $user->getinfo(); //输出测试

(4)实例化公共模型与实例用户自定模型相似,创建一个公共模型类文件(CommonModel.class.php)。
//具体代码与(3)相似,如逻辑我要实现加密算法,则在类里面编写函数

public function strmake($str){
return md5(sha1(md5($str)));//返回一个加密算法
}

然后在控制类中把该类实例化出来。

5.数据库的CURD操作。
(1)add创建多条数据

$data = array(‘name’=>’willdark’,…);//定义一个数组,如$data。
M(‘user’)->add($data);//M的参数为表名,插入单个数据。
//M(‘user’)->addAll($data);//插入多个数据(多维数组,只适用于mysql)

(2)select查询

//$data=M(‘user’)->select();//全部查询
$data=M(‘user’)->where(‘id=1’)->select();//单条语句查询
//或者上面的语句也可以这样写
//$where[‘id’] = 2;
//$where[‘user_name’] = ‘willdark’;
//$where[‘_logic’]=’or’;//设置它的关系运算为or,默认是and
//$data = M(‘user’)->where($where)->select();
dump($data);//输出查看结果

(3)表达式查询eq neq egt gt lt elt …

//操作方式 $where[‘字段名’] = array(表达式,查询条件);
$where[‘id’]=array(‘gt’,2);//查询id大于2的数据。
$where[‘id’]=array(‘between’,’1,8′);//查询id在1和8之间的数据。
$where[‘user_name’]=array(‘like’,’$dam’);//模糊查询,查询user_name含有dam数据。

(4)统计用法查询

//count max min avg sum 如
M(‘user’)->count();M(‘user’)->max(‘id’);

——未完待续—————-

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注