ThinkPHP是一个框架:MVC(采用面向对象思想)框架

市面上常用的框架:

zend framework   yii    thinkPHP

ThinkPHP:有完善的中文资料,使用相对来说比较多

1.       下载ThinkPHP

解压之后生成两个文件:ThinkPHP是我们需要的核心代码,Examples是例子

2、把THinkPHP复制到www文件夹中,然后新建一个index.php文件(与ThinkPhp同级文件夹)

1.       写上:

require("ThinkPHP/ThinkPHP.php");//根据参数的不同,ThinkPHP.php中设置了,会跳转到IndexAction.class.php(这里没有参数)

?>

3、如果在index.php中写:

define('APP_PATH','APP/');//添加这个生产的文件会到App文件中

define('APP_DEBUG',true);//调试模式不生成缓存文件

require("ThinkPHP/ThinkPHP.php");

?>

刚开始就有ThinkPHP,index.php新建一个App,Public文件夹

运行index.php会在App中生成许多文件夹,不会再与ThinkPHP同级文件夹生成文件

在没有写define('APP_DEBUG',true);时会产生缓存文件

修改配置文件后,需要删除一下缓存

在index.php中写上这句话define('APP_DEBUG',true);不产生缓存文件

4、分前台后台

在D:\wamp\www\Think_php\App\Lib\Action里面创建Admin,Home文件夹

在D:\wamp\www\Think_php\App\Tpl中也创建Admin,Home文件夹

二、ThinkPHP的使用

1、在Lib保存了控制器目录(Action,和我们之前写的Controller)和模型目录(Model),Action里面是动作

2、在Tpl目录保存的是视图层的文件

3、Runtime保存的是系统生成临时文件(缓存...)

4、控制器的写法:

GoodsAction.class.php

访问控制器的时候,通过index.php?m=控制器&a=动作

但是由于这种写法不美观,而且SEO不友好()

于是TP框架写了一个pathinfo模式

index.php/控制器/动作

5、模型层

链接数据库----通过配置文件来实现的

现在获得模型,调用模型的方法

TP框架封装了模型对象,通过M()函数获得模型,参数是需要操作的表名

但是需要注意:这个表名需要首字母大写

调用select()方法可以获得所有的记录,相当于我们之前写的getAll()

6、视图层显示数据

assign()

display()注意:display()可以带参数也可以不带参数

如果不带参数,控制器会自动去

视图层/模块分组(控制器名)/模板文件(命名通常是每个动作对应一个模板文件)

每个控制器在Tpl视图层都对应一个目录,

每个动作对应模板文件

如果是标量数据,在模板里面通过{变量名}来访问

如果是数组,在模板文件需要循环遍历这个数组,通过

在模板文件里面,访问数组的元素通过{数组.元素下标}或者通过{数组[‘下标’]}

"{$list.id}"或{$list['name']}s

三、真实项目的部署

1、(1)项目要区分前台和后台(控制器,视图层)

(2)我们要将浏览器能够直接访问的文件(js,images,css)统一的放到一个目录里面(Pulblic),然后将不能被浏览器直接访问的文件,放到另一个目录(App)

通常情况下,浏览器能够直接访问的文件,放到public目录里

不能被浏览器直接访问文件放到private  App(保存项目的应用文件)

2、先将项目分为公共部分和私有的部分

如何将TP自动生成的MVC的结构保存到App目录里面,因为按照项目的部署思想,公共的文件(js,images,css)应该放到Pulic目录,而项目的核心代码应该放到App目录

3、是通过在入口文件,增加一个常量APP_PATH

4、调试模式和部署模式(生产模式)

(1)调试模式:如果修改了数据表的数据,或者是修改了配置文件,需要将缓存删除,开启调试模式,不生成缓存文件APP_DEBUG  =》true

(为了方便调试错误,关闭缓存,APP_DEBUG  =》true)

(2)部署模式:真正上线了,我们很少再会修改数据表的结构或者是配置文件,这个时候,我们会将调试模式关闭APP_DEBUG => FALSE,生成缓存文件

(上线之后,开启缓存APP_DEBUG => FALSE)

5、将项目分成前台和后台(控制器,视图)

通过修改配置文件,增加两个配置项:“

‘APP_GROUP_LIST’ => ‘Admin,Home’,

‘DEFAULT_GROUP’=>’Home’,

(2)访问的时候,要:入口文件/分组/控制器/动作

利用基本的模型完成一个增删改查

增加:

表单应该提交到这个地址,因为控制器的职责是接收数据,命令视图显示或者

在视图层的模板里面给我们们封装了一些伪常量(),保存的是一些路径

(3)、接收数据的时候,用一个数组来保存我们接收到的数据,但是需要注意:数组的下标和数据表的字段对应

注意:M()参数是当前操作的数据表,表名尽量首字母大写,因为window系统没问题,但是移植到Linux操作系统的话,会出错

(4)、只需要调用当前模型的add()方法(参数是需要插入的数据),即可向数据表插入一条数据,插入成功之后返回新纪录的id,如果失败返回false

public function add2(){

$data=array(

'id'=>'5',

'name'=>'juan',

'age'=>'12',

);

$goods_model=M('Xiao');

var_dump($goods_model->add($data));

}

不管向数据表中添加数据成功还是失败,应该给我们提示一些信息,当前控制器的方法

success(‘提示信息’,‘跳转到哪个页面’)-------0-成功之后的提示信息

error(‘提示信息’,‘跳转到哪个页面’)  -----------失败之后提示的信息

if($goods_model->add($data)){

$this->success('添加成功','__URL__/goods');

}else{

$THIS->error('添加失败','__URL__/show');

}

(5)、删除:delete

public function del(){

$goods_id=$_GET['id'];

//var_dump($goods_id);

$goods_model=M('Xiao');

//var_dump($goods_model->delete($goods_id));

if($goods_model->delete($goods_id)){

$this->success('删除成功','__URL__/goods');

}else{

$this->error('删除失败','__URL__/goods');

}

}

删除成功之后返回1,失败返回false

(6)、查找:find

public function edit(){

$goods_id=$_GET['id'];

$goods_model=M('Xiao');

$list=$goods_model->find(1);

$this->assign('list',$list);

$this->display();

}

(7)、更新:save

调用模型的save()方法完成数据的更新

更新成功返回1

更新失败返回false

更新的时候要获得更新的这条记录的id,确切的说应该是这条记录的主键

public function update(){   $data=array(   'id'  => $_POST['id'],   'name' => $_POST['name'],   'age' =>$_POST['age']   );   $goods_model=M('Xiao');   //var_dump($goods_model->save($data));   if($goods_model->save($data)){    $this->success('修改成功','__URL__/goods');   }else{    $this->error('修改失败','__URL__/goods');     }   }

前台文件PHP完善步骤,ThinkPHP使用步骤相关推荐

  1. wps的计算机在哪里设置密码,wps文件怎么设置和取消密码 wps文件密码设置和取消的步骤方法...

    在wps制作文件时,有时候我们需要中途离开,但是担心其他用户不小心操作导致文件丢失,那么我们可以设置wps文件密码,这样就可以避免了,那么怎么将wps文件设置密码呢?其实设置方法非常简单,下面教程之家 ...

  2. 怎么合并多个PDF文件?仅需三个步骤,轻松合成一个文档

    大家在日常学习.工作中有没有碰到过这种情况,当完成一项任务时,需要在网上寻找各式各样的PDF文档资料,而寻找完之后,为了方便阅读与整理,将它们合并成一个PDF文件不失为一个好方法. 有的小伙伴可能刚接 ...

  3. C# 使用HttpClient上传文件并附带其他参数的步骤

    HttpClient和MultipartFormDataContent(传送门)最低适用于.NET Framework 4.5版本 发送端代码 using (HttpClient client = n ...

  4. c语言万能头,C++万能库头文件在vs中的安装步骤(图文)

    前言 C++万能库头文件在vs2019中的安装 一.C++万能库是什么? 1.C++万能库的定义:简而言之,就是一条语句代替了多条语句,包含了目前c++所包含的所有头文件 2.C++万能库的写法:#i ...

  5. 谷歌浏览器单独下载插件文件crx到本地的方法步骤

    描述:谷歌浏览器单独下载插件文件crx到本地的方法步骤 步骤: 打开网站,搜索插件名称 https://www.crx4chrome.com/ 进入详情页,点击Download crx file fr ...

  6. ThinkPad 使用两种BIOS升级文件进行BIOS升级的具体步骤。

    ThinkPad 使用两种BIOS升级文件进行BIOS升级的具体步骤. 一.ThinkPad A/T/R/X/G系列使用BIOS Diskette升级文件进行BIOS升级步骤: 1.在计算机进行BIO ...

  7. 理光有邮件服务器吗,理光Aficio 3035复印机通过电子邮件发送扫描文件的设定方法及操作步骤...

    [转]http://www.hi-office.cn/ricoh/maintenance/4987.html 理光Aficio 3035复印机通过电子邮件发送扫描文件的设定方法及操作步骤 作者:hio ...

  8. 批量生成文件夹并命名,操作步骤

    如何批量生成文件夹并命名?前段时间小编在工作中遇到这样一个事情,由于特殊原因,需要根据已经准备好的名称创建大量的文件夹,创建文件夹并且命名比较简单,只要你会使用电脑就知道如何操作,但问题是创建这么多的 ...

  9. linux下gcc编译c文件生成可执行文件的四个步骤

    Linux下gcc编译c文件为可执行文件分为四个步骤: 分别是 预编译.编译.汇编.链接. 1.预编译( 生成 hello.i 文件) 预编译的处理规则: 1. 将所有的 "#define& ...

最新文章

  1. java有没有求组合的函数_如何在Java 8中使用compose和andThen组合函数
  2. OpenStack Neutron浅析(一)
  3. 【运维】linux硬盘空间不足,扩容硬盘,挂载目录,并永久挂载
  4. 学习3D游戏开发进阶之路
  5. MySQL取字段注释
  6. in the java search_elasticsearch which: no java in (/sbin:/bin:/usr/sbin:/usr/bin)
  7. springcloud20---Config加入eureka
  8. 平衡二叉树搜索二叉树
  9. 解决visio图片生成PDF有留白的问题
  10. Msm8960(APQ8064)平台的MSM-AOSP-kitkat编译适配(4):验证代码并编写自己的device
  11. java删除某些段落word_Java 批量删除Word中的空白段落
  12. oracle一次性说清楚,多种分隔符的一个字段拆分多行,再多行多列多种分隔符拆多行,最终处理超亿亿。。亿级别数据量
  13. topojson转换与应用
  14. git合并多次提交为一次提交
  15. 如何获取iOS App素材
  16. 微信公众号及微信支付签名算法
  17. 02-StringStringBuilderStringBuffer
  18. 山东二本计算机排名大学最新,山东二本大学排名最新
  19. Tomcat下log4j日志文件 配置过程
  20. DockOne微信分享(一三四):国内某大型酒店管理集团基于Kubernetes的实践

热门文章

  1. flash动画制作成品_「咻动画」flash动画在制作方面有哪些优势?
  2. 解析WeNet云端推理部署代码
  3. 搞定研发知识管理,你的企业就能跑快一步
  4. 搭建亿级时间线数据的监控系统,我有绝招!
  5. 刚刚,华为云找到了更安全更卫生的乘坐电梯方式
  6. 【Angular专题】——(2)【译】Angular中的ForwardRef
  7. java mongodb 多文档_如何通过Java在MongoDB中一次性插入多个文档
  8. 百度鹰眼html打开,BMap:WEB 服务API
  9. numpy版本过高的解决方案
  10. 优达学城深度学习之七——TensorFlow卷积神经网络