ThinkPHP入门_慕课网

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u014267209/article/details/52537658

一、简介

1、MVC简介

![MVC框图](https://img-blog.csdn.net/20160914142126707)
![MVC框架总结](https://img-blog.csdn.net/20160914142154941)

2、THinkPHP简介

1.单一入口:在一个网站中,所有的请求都指向一个脚本文件,项目结构规范,控制灵活,更加安全
实例代码:
    <?php 
        define('APP_NAME','App');
        define('APP_PATH','./App/');//特别注意后面的/
        require('./ThinkPHP/ThinkPHP.php');
    ?>

3、THinkPHP目录简介

->common 存放当前项目的公共函数
->Conf 存放当前项目的配置文件:C('name'):输出配置项
->Lang 存放当前项目的语言包
->Lib 存放当前项目的控制器和模型
->Runtime 存放当前项目的运行时文件
->Tpl 存放当前的模板文件

二、简单操作

1、THinkPHP运行流程

1.加载ThinkPHP.php
2.加载核心文件
3.加载项目的文件 分析url  调用相关控制器
    ->m module 模块  控制器
    ->a action 方法 action=页面
==>localhost/index.php?m=index&a=index

2、THinkPHP的URL模式

    //echo U('Index/user',array('id'=>1),'html',false,'localhost');
    1:默认模式(pathinfo模式):/ThinkPHPStudy/index.php/Home/Index/user/id/1.html       
    0:普通模式: /ThinkPHPStudy/index.php?m=Home&c=Index&a=user&id=1
    2:重写模式: /ThinkPHPStudy/Home/Index/user/id/1.html(隐藏index.php)
    3:兼容模式: /ThinkPHPStudy/index.php?s=/Home/Index/user/id/1.html

->查看url模式:C('URL_MODEL')
->U('模式/方法',array('id'=>1),'html',true/false,localhost)

->重写url用来隐藏index.php
    1.开启Apache服务的rewrite服务
    2.在index.php的同级目录下创建.htaccess文件
        内容/:<IfModule mod_rewrite.c>
                  Options +FollowSymlinks
                  RewriteEngine On

                  RewriteCond %{REQUEST_FILENAME} !-d
                  RewriteCond %{REQUEST_FILENAME} !-f
                  RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
            </IfModule>
->url的伪静态配置: 'URL_HTML_SUFFIX'=>'html|json',  // URL伪静态后缀设置

3.自定义函数库

在APP/Home/Common目录下创建function.php文件,面的函数为公用函数库

三、模板技术

1、模板的使用

1.在App/Home/View目录下创建一个以模板为名字的文件夹,如Index,在Index下创建一个以方法名为名字的html文件,如index.html。
2.在控制器的方法上使用: $this->display()方法进行调用。
 ->display('test')可以指定参数,对应test.html,也可以跨模块,如:display('User/index')
3.传递参数
 ->在控制器上使用$this->name = 'String'或者$this->assign('name1','ABC')->assign('name2','EFG')
 ->在html页面上使用php语法输出,如echo name

2、ThinkPHP模板引擎

 1.输出:{$zxj.name}/{$zxj['name']}/{$zxj.phone|default='13023000000'}
 2.运算:{$zxj['age']+1},注:此时不能使用.表达式,否则无法输出结果
 3.调用函数:{$zxj|md5|substr()}
 4.循环输出:volist/foreach
    <volist name = 'person' id='data' offset='1' length='3' empty='没数据啦'>
        {$data['name']}--------{$data['age']}<br>
    </volist>

    <foreach name='person' item='data'>
        {$data.name}------------{$data.age}<br>
    </foreach>  
    // name:后台传输过来的数组
    // offset:从哪一条数据取值,初始值为 0
    // length:取多少条数据
5.IF判断:  eq:=  nep:!=  gt:>  egt:>=   lt:<  elt:<=  heq:===  nheq:!==
 <if condition='$num gt 10'> num大于10
    <elseif condition='$num lt 10' /> num小于10
    <else/> num等于10
</if>
6.ThinkPHP特有的比较标签
<eq name='num' value='10' >num = 10</eq>
<compare name='name' value='11' type='eq' >num == 11</compare>
7.区间标签:in notin between notbetween range
    ->:<in name='num' value='1,2,3'>在这个区间</in>
    ->:<between name='num' value='1,10'>在1~10之间</between>
    ->:<range name='num' value='1,2,4' type='in'></range>
8.三元运算符:   ?:
    {$num>11?'大于11':'不大于11'}
9.在模板中使用原生php
    <php> echo 'advd' </php>

四、数据库技术

1、模板的使用

1.配置:
    'DB_TYPE' =>  'mysql',     // 数据库类型
    'DB_HOST' =>  'localhost', // 服务器地址
    'DB_NAME' =>  'muke',      // 数据库名
    'DB_USER' =>  'root',      // 用户名
    'DB_PWD'  =>  'root',      // 密码
    'DB_PORT' =>  '3306',      // 端口
    'DB_PREFIX' =>  'mk_'      // 数据库表前缀
2.实例化模型
    //1.实例化基础模型
        $privilege = M('privilege');
        $data = $privilege -> select();
        dump($data);
    //2.自定义模型
        1.在model文件下创建模型文件,如UserModel.class.php
        2.在controller中实例化该模型
    //3.实例化公共模型
        1.编写CommonModel集成Model
        2.编写相应的自定义模块并集成CommonModel
    //4.实例化空模型
        $model = M();
        $model->query('select * from t_user');//读取
        $model->execute('update t_user set user_name = "haha" where u_id = 1');
    ->:M方法和D方法的区别:D('user')
        M方法只能实例化基础的模型
        D方法会先去寻找自定义模型,若找到了,则实例化该自定义模型,否则会使用M方法实例化基础模型

2、CURD操作

1.添加数据
    $data = array('user_name' => 'xiaoming',
              'nick_name' => 'xiaomingming', 
              'password' => md5('123456'), 
              'create_date' => date('Y-m-d H:i:s'), 
              'update_date' => date('Y-m-d H:i:s'), );
    <>M('User') -> add($data); ->:返回插入的数据的主键
    <>addAll($dataList);->批量插入数据,仅限mysql数据库
    <>getLastSql();->获取最后执行的一条数据库语句
2.查询数据
    // 查询所有
    $data = M('User') ->select();
    dump($data);
    echo('<hr>');
    //查询一种条件
    $data = M('User') -> where('id=2')->select();
    dump($data);
    echo('<hr>');
    //多条件查询
    $where['id']=2;
    $where['user_name']='xiaoming';
    $where['_logic']='or';
    $data = M('User') -> where($where)->select();
    dump($data);
    echo('<hr>111');
    //表达式查询:eq neq egt gt lt elt between in like not between 
//  $where['字段名']=array(表达式,查询条件);
//  $where['id'] = array('lt',2);//单条件
//  $where['id'] = array('between','1,8'); //双参数条件
//  $where['id'] = array('like','%xiao%'); //模糊条件
//  $where['id'] = array('like',array('%xiao','ming%')); //双模糊条件
    $where['id'] = array(array('gt',1),array('lt',3),'or'); // 区间查询
    $data = M('User') -> where($where)->select();
    dump($data);
    echo('<hr>');
    //统计用法
    /**
     * count:统计数量
     * max:获取最大值
     * min:最小值
     * avg:平均值
     * sum:求和
     */

    $data = M('user')->count();
    $data = M('user')->max('user_name');
    $data = M('user')->avg('score');
    $data = M('user')->sum('score');
    dump($data);

3.更新数据
    $update['score'] = 60;
    $where['id']=1;
    $data = M('User')->where($where)->save();

4.删除数据
    $where['id']=1;
    $data = M('User')->where($where)->delete()
    也可以直接使用主键删除:M('User').delete(3);

猜你喜欢

转载自blog.csdn.net/u014267209/article/details/52537658