• 总结回顾---1


    总结下今天学习的知识点

    系统配置文件:ThinkPHP/Conf/convention.php

    分组 / 平台配置文件:Application/Home/Conf/config.php

    应用配置文件:Application/Common/Conf/config.php

    【一】ThinkPHP模型M

    (1)配置数据库连接

    数据库的连接配置可以在系统配置文件ThinkPHP/Conf/convention.php中找到

    实际开发里,前台后台一般使用一个数据库,也就是说一个项目一个数据库,所以一个应用使用一个数据库,所以放到应用层级的配置文件ApplicationCommonConfconfig.php

    (2)创建数据库和数据表

    数据库名:db_oa

    数据表名:  sp_dept(department部门);

    准备好sql语句.

    知识点:not null不为空;auto_increment自增;default默认;

    这里除了通过命令行cmd创建,还可以使用Navicat Premium。它是一个可多重连接的数据库管理工具,它可让你以单一程序同时连接到MySQL、SQL Server、SQLite、Oracle

    (3)模型创建

    (4)模型实例化(创建控制器,连接数据表)

    模型的本质是类,类在使用时需要实例化操作。1. 普通实例化;2. 快速实例化方法U、M

    (5)CURD操作

    模型操作数据表的基本操作

    【二】实用项

      代码调试

    (1)跟踪信息;

    (2)两种模式,在ThinkPHP中为了方便开发,提供了两种模式:开发/模式模式,生产模式;

    (3)sql调试;语法:$model -> getLastSql()--小驼峰命名法,表示获取当前模型里成功执行的最后一条sql语句。

    别名:因为getLastSql书写不便,所以在3.2版本之后起了个别名_sql,用法与之前一致。语法:$model->_sql();

    (4)性能调试,在ThinkPHP中系统提供了性能测试的快速方法G。

    目前所学过的快速方法:U(URL组装),D(实例化自定义模型),M(实例化父类模型),G(性能测试)

    【三】AR模式

    (1)简介:AR模式即Active Record模式,是一个对象关系映射(ORM) 技术。每个AR 类代表一张数据表(或视图),  数据表(或视图)的字段在AR 类中体现为类的属性,一个AR实例

    则表示表中的。

     AR模式核心:三个映射 / 对应

                     AR类   ==   表;(模型类关联了数据表)

                     AR类属性  ==   表的字段;

                    AR类实例   ==   表的记录;

    (2)应用(AR模式中的CURD操作)

    增加:$model ->add();//返回新增记录的主键id

    更新:$model ->save();//返回值为影响行数

    查询:AR模式没有查询操作

    删除:$model -> delete();

    【四】ThinkPHP视图V

    (1)什么是视图?

    MVC中的V(view),主要负责信息的输出展示

    (2)视图的创建?

    创建位置:分组目录Home下的View目录下指定的控制器名目录中,然后将模板绑定到控制器的方法中,一个公共控制器中可以绑定多个模板

    注意:位置问题,控制器同名

    ①位置是view下与控制器同名的目录中;view下一级目录为控制器,二级目录为方法(对应的模板文件)

    ②如果有多个模板文件,则按照上面要求进行创建

    (3)视图的展示?

    在smarty中展示模板用的display方法,在ThinkPHP里同样是display方法

    display在ThinkPHP中的3种语法格式:

    ①$this->display();                                                                                       展示当前控制器下与当前请求方法名一致的模板文件

    ②$this->display(模板文件名--不带后缀);                                                    展示当前控制器下指定模板文件

    ③$this->display(view目录下目录名/模板文件名--不带后缀);                      展示指定控制器下的指定模板文件

    (4)变量分配:将变量从控制器的方法里传递到模板中展示的过程即为变量分配

    (5)变量分隔符:ThinkPHP默认变量分隔符为{},可以在配置文件ThinkPHP/Conf/convertion.php里找到配置项

    (6)模板常量替换机制

    模板常量来源?

    这里模板常量是通过模板内容替换机制来实现的,并非是常量的定义。所以模板常量并非是常量,而是字符串。

    替换机制可以查看行为文件ThinkPHP/Library/Behavior/ContentReplace.Behaviour.class.php

    拓展:查看后即可得出行为文件命名,文件名.Behaviour.class.php。

    (5)获取模板内容

    在ThinkPHP里有一个方法与display展示模板方法类似,叫做fetch()方法

    $this->display();用来展示模板内容,而$this->fetch常用来获取模板内容,

    该语法封装在系统的函数库ThinkPHP/Common/functions.php里

    (7)视图注释

    回顾下HTML的注释<!--注释内容-->,普通的注释在页面源码中会被输出

    (8)变量分配

    变量输出:简单变量,一维数组,二维数组,对象变量

    变量的分配语法相同:都是assign('模板中的变量',PHP中的变量);

    对象变量输出

    对象在实例化之后,会保存到变量中,而这个变量也可以分配到模板里去

    首先创建类,然后实例化类来创建对象

    注意:

                  1. 对于多个人开发项目,函数名很容易重复。用了类之后,类之间的方法名被类分开,重名也没关系。

                      但是当项目更大时,类名也有可能重复。此时就要用到命名空间,来避免重名。所以创建类之前必须定义命名空间

                  2. 创建类文件时,必须加上文件名.class.php

    Student.class.php,

    TestController.class.php,该文件里不用引入,直接实例化类,输出

    object(AdminControllerStudent)#6 (0) {
    }

    类的实例化:

           1. 之所以不用引入类就能实例化,主要因为命名空间

    命名空间运行流程:当需要引入或使用元素时,默认先去当前空间下去找。而Student.class.php在当前空间下AdminController,所以会找到执行。若找不到则会报错

           2. 如果不写命名空间、include、require则会默认从当前空间下去查找需要的元素,若找不到则报错

    拓展:设置编码字符集:

    index.php入口文件:
    //给入口文件添加header头声明字符集
    header('Content-Type:text/html;charset=utf-8')

    (9)系统变量

    ThinkPHP里提供了以下几个系统级别的变量(可以理解为超全局变量在模板中的使用)

    $Think.server;$Think.get;$Think.post;$Think.request;$Think.cookie;$Think.session;$Think.config;

    (11)视图中使用函数

    在实际开发中,有些变量不能直接使用。举个例子,数据表中存储时间一般都为时间戳格式,展示的时候需要处理格式化,操作相对繁琐。这个时候便涉及到了视图中使用函数

    语法格式:{$变量|函数名1|函数名2=参数1,参数2...,###}

    (12)默认值

    使用场景:在论坛的个性签名处,如果用户什么都没写,一般默认会显示-----------→这个家伙很懒,什么都没留下

    默认值:当某个变量不存在或为空时,便会显示默认字符或默认值

    语法:{$变量名|default = 默认值},结合上面视图中函数的使用。这里可以理解为{$变量名|函数名=参数},而default为ThinkPHP封装的函数

    (13)运算符

    加减乘除取余,自增自减

    {$a+$b},{$a-$b},{$a*$b},{$a/$b},{$a%$b},{$a++}或{++$a},{$a--}或{--$a}

    (14)文件引入

    提出公共部分,后期维护方便。语法:<include file='需要引入的模板文件'/>

    (15)视图中数组循环遍历volist、foreach

    在ThinkPHP里,系统提供了两个标签volist和foreach来实现数组在模板中的遍历操作

    (16)if标签

    PHP中if判断作用是流程控制,在ThinkPHP里同样也可以用于流程控制

    语法:(注意<if></if>标签闭合)

    (17)PHP标签

    PHP标签指在模板中使用PHP语法格式

    ThinkPHP支持两种形式标签①PHP内置的标签<?php 代码段 ?>;②ThinkPHP封装的PHP标签<php>代码段</php>

    在配置项里,有一个配置项(TMPL_DENY_PHP即tmplate deny php拒绝php模板),可以禁用PHP标签。该配置项在系统配置文件ThinkPHP/Conf/convention.php里

    // 布局设置
    'TMPL_DENY_PHP'         =>  false, // 默认模板引擎是否禁用PHP原生代码

    开启后便会禁用原生PHP代码(不建议禁用),此时在模板文件里<?php ?>原生PHP标签失效。下面来验证下,发现报错

    :(
    模板禁用PHP代码

    不建议禁用。若禁用了原生PHP标签,某些功能会异常。比如成功跳转和失败跳转,因为成功跳转和失败跳转使用了原生PHP标签,禁用的话会跳转失败

  • 相关阅读:
    每行显示多少个
    CentOS挂载NTFS格式硬盘
    BAT教程 :第一节(批处理基础)
    BAT教程 第三节(FOR命令中的变量)
    BAT教程 :第二节(for命令详解 )
    USB设备读取的相关问题
    BAT教程 :第四节(批处理中的变量)
    内核级HOOK的几种实现与应用
    书籍链接
    BAT教程 :第五节(set命令详解)
  • 原文地址:https://www.cnblogs.com/fightjianxian/p/8673348.html
Copyright © 2020-2023  润新知