thinkPHP框架使用方法

作者: bo_bo_bo_la | 来源:发表于2018-01-05 20:54 被阅读127次

    title: thinkPHP框架使用方法
    date: 2018-01-05 20:30:44
    tags:


    1. thinkPHP思想

    thinkPHP基于MVC思想,MVC是一种设计模式,他强制的使用应用程序的输入、处理和输出分开。MVC应用程序被分为三个核心部分:模型(model)、视图(view)、控制器(control),他们各自处理自己的任务。
    例如:
    <div align=center>

    [图片上传失败...(image-7538ba-1515156835754)]

    </div>

    2. 单入口创建项目

    <?php
        //单入口 ||  主入口 :路由分配
        
        //开启调试模式:部分做缓存
        define("APP_DEBUG",true);
        //定义项目名称
        define("APP_NAME","Index");
        //定义项目路径
        define("APP_PATH","Index/");
        
        //引入核心文件
        require "ThinkPHP/ThinkPHP.php";
    ?>
    

    执行上述代码时,系统自动创建一个文件夹,里面包含的内容与系统封装的thinkPHP一样,而这里面的文件就是我们要写的代码。

    [图片上传失败...(image-d688cc-1515156835754)]

    3. 库目录结构(thinkphp)

     Lib/Think: 为Thinkphp框架核心目录

     Lib/ORG : 为Thinkphp框架自带扩展目录

    4. 项目目录结构(home)

    • Lib:放置控制层类和模型层类
      - Action:相当于controler
      - Model: model层
    • Tpl:放置着模板(皮肤)文件,相当于view
    • Conf:系统项目配置目录
    • Common:项目中公共用到的资源,如js,css,图片等
    • Runtime:系统运行时临时目录(若运行中产生缓存现象,可以将该目录中内容进行删除)
      - Cache:模板页面缓存
      - Data:数据字段缓存
      - Logs:系统运行日志
      - Temp:临时文件缓存
      - app:系统配置文件编译缓存

    5. thinkPHP的访问规则

    • http:localhost/thinkphp/index.php/index/index
    • Thinkphp规定:所有的主入口文件默认访问index控制器,且所有的控制器默认是去找index方法(动作)
    • 控制器类名必须是于文件名相同(除去.class.php),首字母必须大写,后面加上Action,且要继承Action
    // 本类由系统自动生成,仅供测试用途
    class IndexAction extends Action {
        public function index(){
                $name = "DR";
                //将变量输出到模板
                //1、(不常用)
                $this->name = "DR";
                //2、(常用)
                $this->assign("height","183cm");
                $this->assign("showTime",$showTime);
                //加载index模板  默认加载
    //          $this->display();   
                //加载到指定的模板  不加后缀
                $this->display("test");
        }
    
    • 方法名通常是public(默认),否则thinkphp无法正常解析

    6. 控制器与模板之间的关系

      1. Thinkphp中模板和控制器之间的访问原则
      • 加载模板(跨模板): $this->display(Action:模板名称)
      • 加载模板(本模板):$this->display([模板名称])
                //加载到指定的模板  不加后缀
                $this->display("test");
    
      1. 控制器与模板之间的变量传递
      • $this->assign('变量名','变量值')
      • 在模板中采用{$变量名}的形式输出变量值
                <ul>
                <!-- offset="1"从什么位置输出  length="2"输出几条 empty="暂时没有数据" 当数据没有的时候显示 -->
                <volist name="arr" id="val" offset="1" length="1" empty="暂时没有数据" >
                    <li>姓名是:{$val.name},年龄是:{$val["age"]},身高是:{$val.height}</li>
                </volist>
                
                <foreach name="arr" item="val">
                    <p>姓名是:{$val.name},年龄是:{$val.age},身高是:{$val["name"]}</p>
                </foreach>
                
                <!--
                    gt : 大于
                    egt: 大于等于
                    lt: 小于
                    elt: 小于等于
                    eq: 等于
                    neq: 不等于
                    heq: ===
                    nheq: !==
                -->
                <if condition="$num gt 5">
                    num的值大于5
                    <elseif condition="$num lt 5" />
                        num的值小于5
                    <else />
                        num的值等于5
                </if>
            </ul>
            <!--对str进行加密-->
            {$str|md5};
            <hr />
            当前时间:{$nowTime|date="Y-m-d H:i:s",###}
            <hr />
            处理之后的时间:{$showTime}
            
            
            <for start="1" end="10">
                {$i} <br />
            </for>
            
            
            <switch name="randNum">
                <case value="1" break="1">{$randNum}的值等于1</case>
                <case value="2" break="1">{$randNum}的值等于2</case>
                <default />{$randNum}的值不是1,2
            </switch>
            
            <hr />
            <eq name="randNum" value="2">{$randNum}的值等于2</eq>
            
            <hr />
            {$randNum > 2 ? "大于2" : "小于2"}
            
            <hr />
            <!--in  ||  notin-->
            <in name="randNum" value="2,3,4,5">{$randNum}在值里面</in>
            <hr />
            <!--between-->
            <between name="randNum" value="2,5">
                {$randNum}在值2~5里面
                <else />
                {$randNum}的值等于1
            </between>
            
            <!--引入外部文件  后面不加后缀-->
            <include file="commonView" />
            <!--引入外部文件的时候,如果是外部文件夹里面的文件
                会生成类,要先引入里面的类
            -->
            <include file="Public:header" />
            <!--也可以用相对路径-->
            <include file="/ishuowww/Tpl/Public/header" />
    
      1. 控制器调用模板的方式
      • URL: 代表当前操作所在木块地址(同控制方法跳转)
      • APP:代表当前项目的入口文件的地址(跨控制器方法跳转)
      • ROOT:代表网站根目录地址(跨前、后台控制器方法跳转,范围最广)

    7. 配置文件

    • 属性配置
      1. 配置文件在config.php文件里
        配置的属性通过大C方法来实例化
    <?php
        class ProductAction extends Action{
            function getUrlModel(){
                //实例化配置项  C()方法调用Conf里面的方法
    //          echo C("URL_MODEL");
                //实例化自定义
    //          echo C("name");
                echo C("height");
            }
        }
    ?>
    
     2. 如果有多个配置文件的话,可以通过“LOAD_EXT_CONFIG”=>"user"来进行配置
    

    "LOAD_EXT_CONFIG" => "user", 在config.php里面配置

    <?php
    return array(
        //'配置项'=>'配置值'
    //  "URL_MODEL" => 0
        "name" => "D2222",
        "age" => "19",
        //加入其他配置项文件
        "LOAD_EXT_CONFIG" => "user",
    );
    ?>
    

    8. 连接数据库

        //数据库配置信息
        'DB_TYPE'   => 'mysql', // 数据库类型
        'DB_HOST'   => 'localhost', // 服务器地址
        'DB_NAME'   => 'thinkphp', // 数据库名
        'DB_USER'   => 'root', // 用户名
        'DB_PWD'    => '', // 密码
        'DB_PORT'   => 3306, // 端口
        'DB_PREFIX' => '', // 数据库表前缀 
    

    相关文章

      网友评论

        本文标题:thinkPHP框架使用方法

        本文链接:https://www.haomeiwen.com/subject/gowsnxtx.html