返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >thinkphp笔记二
  • 504
分享到

thinkphp笔记二

2024-04-02 19:04:59 504人浏览 安东尼
摘要

1.控制器创建原则:基本原则:根据功能,原则上一个功能项对应控制器中的一个动作可能多个功能共享一个动作添加和修改比较接近,根据条件来选择添加还是修改可能需要辅助方法完成一个动作基本原则:根据功能,按照数据表

1.控制器创建原则:

基本原则:根据功能,原则上一个功能项对应控制器中的一个动作

可能多个功能共享一个动作添加和修改比较接近,根据条件来选择添加还是修改

可能需要辅助方法完成一个动作

基本原则:根据功能,按照数据表结构进行划分控制器类

基本原则,项目包含多个不同用户角色的功能,如果不区分模块,可能会导致控制器重名,影响代码阅读,按照不同角色功能划分不同模块

是否有必要创建模块

控制器文件如何分类

控制器动作如何制定

2.视图文件的架设

       静态资源文件

              组成:图片 CSS javascript

              文件目录:public/子目录

       布局文件

              组成:页面头部,尾部,面包屑,正文

              目录:模块目录/view/

       视图文件

              一般原则:控制器中的一个方法对应一个视图文件

3.数据库模型基本使用

       连接数据库

              使用配置文件

              传入参数形式

       实例化数据库操作对象

              使用new Model()创建

              使用M()函数创建

       执行sql原生查询

              Query() 方法

              Dump()函数测试结果

4.数据库基本操作

    字符串查询

        $table = M('tableName');

        $results = $table -> where('id > 3')->select();

    关联数组查询

        $condition['id'] = array('neq','3');

        $condition['uid'] = array('neq','1');

        $results = $table -> where($conditon) -> select();

    魔术方法查询

        $results = $table -> getById('1');//只能获取指定条件的第一条记录

    统计数据

        $count = $table -> count();//统计表中数据

        $count = $table ->max('id');

    limit

        $limit = $table -> limit(3) -> select();//前三条记录

        $limit = $table -> limit(2,2) -> select();//第三条记录开始查询两个

    order排序

        $order = $table -> order('id desc') ->select();//id降序排列

       创建和插入数据

              Create():在内存中创建数据,不写入数据库,过滤掉无效字段(表中没有的字段)

工作流程:1.获取数据(POST参数或者用户传入的数据)2.进行数据校验3.把传入的数据放到当前对象的data属性中

参数:1.若没有参数,表示插入$_POST[]数据2.可以传入关联数组数据3.可以传入标准对象数据

      Model::MODEL_INSERT     Model::MODELUPDATE

返回值:创建好的数据对象组

可以直接为Model对象添加属性或修改属性,以实现添加内存数据的目的

              Data():基本同create(),不进行数据校验

              Add():把内存中的数据插入到表中

1没有参数,直接使用MODEL对象的data属性(create()和data()方法返回)

2附加条件

3是否覆盖标识(是否覆盖已经存在的主键数据)

4可以直接过滤掉数据表中不存在的字段

5直接使用add(),不会进行数据校验

//写入数据前进行校验

                if($this -> create($data))

{

return $this-> add();

}



       读取数据

              Select():1不传参查询表中所有记录2.传一个参数select(1)主键为1的记录3.select(1,3,5)返回主键为135的记录4传入false返回当前查询的语句

              Find():查询一条记录,不传入参数获取第一条记录,find(1)返回主键为1的记录

              getField():只传入一个参数,获取第一条记录的值

              where条件:1传入字符串 2传入数组或者对象,可以过滤掉非法字符。

              limit():limit(1)1.获取指定条件的1条记录 limit(2,2)获取从第一个参数开始的2条记录

              order():按照指定字段对记录进行排序,单字段排序和多字段排序

 

       删除数据:删除成功返回删除的个数,失败返回false

              $db = M(‘msgs’);

              $results = $db –> where(‘id = 1’)-> delete();//删除id为1的记录

              $results = $db –> where(‘1’)-> delete();//删除所有记录

              $results = $db -> delete();//不传参数返回false

              $results = $db -> delete('1,3,5')//删除主键为135的记录

       修改数据:更新指定条件的数据

       $data['name'] = "张三";

       $results = $db -> where('id = 1') -> save($data)

              若传参,表示更新后要满足的效果

              若不传参,表示使用当前数据表操作对象data属性中的记录

更新条件,可以使用where显示指明更新条件,若无更新条件,save()参数中的记录包含主键,更新主键对应的记录,否则不更新。更新成功返回更新的记录数,更新失败,返回false

setField:更新个别字段的值

setInc加 setDec 减

5.模型操作类

       作用:mvc分离相对彻底,逻辑清晰,适合分工合作,方便实现一些特性的效果(过滤,验证,自动完成)

       创建模型类:

              文件名:数据表名Model.class.PHP

              目录:模块/model/目录

              类名:class 数据表名Model  extends Model

              可选属性:tablePrefixtableName trueTableName dbName _validate(自动验证规则) _auto(自动完成规则)

              添加方法用来实现业务逻辑

              使用:new方法  D()函数

6.ActivRecord

       表映射到类,记录映射到对象

       ORM模型:对象关系映射模型


7.session处理

    

    初始化:无需手动调用,除非有特殊需要的时候

    设置值:session(键,值);

    获取值:session(键);

    删除值:session(键,null);

    判断值是否存在:session(?键);

    模板中使用session:判断session状态 输出session值   

    

    控制器中输出session  dump($_SESSION);

    

    present标签用于判断某个变量是否已经定义 

   <present name="Think.session.loginedUser">
   欢迎您,{$Think.session.loginedUser}! | <a href="/user/loGout">注销</a>
   <else />
   您尚未登录(<a  href='/home/user/login/'>登录</a>)&nbsp;
   还没有用户名(<a href='/home/user/reGISter/'>注册</a>)
   </present>
   
8.分页 
    页面跳转 <input type="submit" onclick="window.location.href='/home/msg/addmsg/';" value="添加一个新讨论话题">
    
    分页本质是:limit查询 sql语句:select * from msg offset size//从offset开始的size条记录  分页链接 /home/msg/index/page/1

             

 

 


--结束END--

本文标题: thinkphp笔记二

本文链接: https://lsjlt.com/news/37798.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • thinkphp笔记二
    1.控制器创建原则:基本原则:根据功能,原则上一个功能项对应控制器中的一个动作可能多个功能共享一个动作添加和修改比较接近,根据条件来选择添加还是修改可能需要辅助方法完成一个动作基本原则:根据功能,按照数据表...
    99+
    2024-04-02
  • MySql笔记(二)
    目录 MySQL笔记(二) 一幅画,一次瞬间的回眸,就在那次画展上,那个眼神,温柔的流转,还是那干净的皮鞋,一尘不染,俊朗的眉宇性感的唇,悄悄走近...
    99+
    2014-11-09
    MySql笔记(二)
  • MongoDB笔记二
    五、Mongodb的API...
    99+
    2024-04-02
  • Linux 学习笔记 二
    压缩解压缩压缩格式:gz bz2 xz zip z 压缩算法,算法不同,压缩比也不同compress: filename.Zuncompress: 不能压缩文件夹,会将文件夹内的文件单个...
    99+
    2024-04-02
  • Python学习笔记(二)
    学完了基础中的基础后,我们准备深入基础中的函数、类和对象。 function函数: 正如英文单词描述的,函数就是“功能”的意思,把完成一个功能所需要的代码打包起来放在一个函数下可以方便以后程序的重复调用,也能使整体代码条理清晰。正如前...
    99+
    2023-01-30
    学习笔记 Python
  • Python笔记(二)——python调
     前一篇讲了简单的C/C++调用Python脚本模块(.py)。既然是用于诸多游戏程序的脚本语言,那肯定是缺不了互调(礼尚往来)。因此,本篇讲一个简单的python调用C/C++写的DLL模块,对Python进行功能扩展。这里写一个简单的例...
    99+
    2023-01-31
    笔记 Python python
  • mysql学习笔记二 DQL
    -- 查询编号为1004的学生的姓名和生日 select name,birthday from student where id=1004; -- 查询年龄大于18的学生信息 select...
    99+
    2018-07-25
    mysql学习笔记二 DQL
  • python scrapy学习笔记(二)
    使用scrapy批量抓取,参考http://python.jobbole.com/87155一、创建项目# scrapy startproject comics创建完成后的目录结构. ├── comics │   ├── __init__....
    99+
    2023-01-31
    学习笔记 python scrapy
  • Redis学习笔记(二) 链表
    链表提供了高效的节点重排能力,以及顺序性的节点访问方式,并且可以通过增删节点来灵活地调整链表的长度。 redis中链表应用广泛,如list中就使用了链表。 每一个链表节点使用listNode结构标识(双向链表): typedef...
    99+
    2017-01-27
    Redis学习笔记(二) 链表
  • mysql5.7二进制安装笔记
    检测系统是否已经安装过mysql或其依赖,若已装过要先将其删除,否则第4步使用yum安装时会报错: [root@mysql01 Packages]# yum list installed |grep mys...
    99+
    2024-04-02
  • Python学习笔记(二)Python基
    [root@kaibin ~]# ipython In [1]: import platform In [2]: print platform.uname() ('Linux', 'kaibin.test1', '2.6.32-431.el...
    99+
    2023-01-31
    学习笔记 Python
  • Android学习笔记——Menu介绍(二)
    知识点: 这次将继续上一篇文章没有讲完的Menu的学习,上下文菜单(Context menu)和弹出菜单(Popup menu)。 上下文菜单 上下文菜单提供对UI界面上的特定...
    99+
    2022-06-06
    android学习 Android
  • MongoDB笔记十二——固定集合
    1、固定集合的特性...
    99+
    2024-04-02
  • php项目笔记(二)php部分
    数据库连接初始化<php try   {  $pdo = new PDO('mysql:host=localhost;dbname=test...
    99+
    2024-04-02
  • python学习笔记字符串(二)
    字符串类型(string)字符串是以单引号'或双引号"括起来的任意文本,比如'abc',"123"等等。请注意,''或""本身只是一种表示方式,不是字符串的一部分,因此,字符串'abc'只有a,b,c这3个字符。如果'本身也是一个字符,那就...
    99+
    2023-01-31
    字符串 学习笔记 python
  • Python学习笔记(二):使用Pyth
    1.目的: 2.安装XlsxWriter 3.xlsxwriter常用功能: 4.在Excel中写数据: 4.1 一维表格生成 1.目的: 用xlwt来生成excel的,生成的后缀名为xls,在x...
    99+
    2023-01-31
    学习笔记 Python Pyth
  • Python第二周 学习笔记(3)
    1.运用数组实现求10万以内质数: prime = [2] for i in range(3,100000,2): flag = False up = int(i**0.5)+1 for j in prime: ...
    99+
    2023-01-31
    学习笔记 Python
  • Python学习笔记整理(二)pytho
    一、Python的数字类型 1、数字常量 python数字类型在程序中如何显示(换句话说,作为常量) 数字            常量 1234,-23,0        一般整数 9999...
    99+
    2023-01-31
    学习笔记 Python pytho
  • Python学习笔记—第二章—IPyth
    书目:Python(Unix和Linux系统管理指南)学习日期:20130807知识点总结:安装IPython:源码安装:tar zxvf ipython-0.13.2.tar.gz python setup.py install...
    99+
    2023-01-31
    第二章 学习笔记 Python
  • Redis学习笔记(十二) 复制(上)
    偷个懒,晚上工作忙的太晚,整个复制功能的内容还没有写完,这里先说一下复制功能的简单应用。 在Redis中,用户可以通过执行SLAVEOF命令或者设置slaveof选项,让一个服务器去复制另一个服务器,我们称呼被复制的服务器为主服务...
    99+
    2017-05-07
    Redis学习笔记(十二) 复制(上)
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作