thinkphp阶段性学习小结
2016-12-15 13:37
246 查看
暑假刚实习的时候,面试的是PHP的岗位,过了2个多月,因公司业务需要,PHP岗位被取消掉.之后便转为web端,从此开始了web的实习生涯.关于tp的学习,之前整理的一些东西,拿出来做下分享~
7月份刚来公司那会,每天并没有什么事情可以做,带我的人虽然前后端都吃的开,但是,很少派任务给我做,多半的时间也都是我自己一个人捧着一本书或者是视频在那里自己学习.那时候刚接触公司的php框架部分,学习的信心也很足.每天都很早的来公司,很晚才走.就是想可以早一点适应新的项目,看懂代码~所以整理了一些学习过程中的代码,虽然很久没怎么写php了(除了 毕设是用php写的,用的是yii框架+bootstrap写的)
以下是thinkphp的框架部分,做一个简单的解读~
index.php 入口文件
README.md README文件
Application 应用目录
Public 资源文件目录
Thinkphp 框架目录
Public 资源文件目录 ->用来存放css和images,js部分
Application 应用目录->页面主要代码部分
Thinkphp 框架目录->这里面的文件基本不需要改动,除非改动成功和失败后的页面,或者自己重写成功,失败之后的跳转方法.
Model 主要数据库的连接
View 视图的显示界面
负责对Model和View搭桥连接
Application
02.|-Common 应用公共模块(不能直接访问)
03.||-Common 应用公共函数目录
04.||-Conf 应用公共配置文件目录
05.|-Home 默认生成的Home模块(前台模块)
06.||-Conf默认配置文件目录
07.||-Common 模块函数公共目录
08.||-Controller 模块控制器目录
09.||-Model模块模型目录
10.||-View 模块视图文件目录
11.|-Runtime 运行时目录(默认)->可以配置
12.||-Cache 模板缓存目录
13.||-Data 数据目录
14.||-Logs 日志目录
15.||-Temp 缓存目录
|-Admin 后台模块
tp几种简单的方法及其他方式易记~
C方法(config),C方法是tp用于设置,获取,以及保存配置参数的方法.U方法(url)
I方法(input)
注:如果已建立Model类的话,就用D函数,没有建立的话用M方法,D方法可以自动检测模型类,如果存在自定义的模型类,则实例化自定义的模型类,如果不存在,则会实例化Model基类,同时对于已实例化的模型,不会重复去实例化
fetch()方法和display方法基本相同->fetch()获得解析后的模板内容.
区别:display方法直接输出模板文件,渲染后的内容 而 fetch方法是返回模板文件渲染后的内容.
命名空间
define(名称值);//在类外部声明变量,对同名称的常量只能声明一个,与命名空间没有关系,并不会发生影响.const 名称=值;//与命名空间有关系,发生影响,访问的元素没有指明具体的空间,默认访问当前的空间.
两种方式实例化功能类对象:
完全限定名称,如:$obj = new \Think\Verify();
空间类元素的引入,如:use Think\Verify;$obj = new Verify();
RABC (role base access control)基于角色的用户访问权限控制
数据库操作方法使用~
1.where()限制操作(查询)条件,如: $goods->where('goods_price>1000 and goods_name like "李%"'); $info=$goods->select();//做一个查询 2.field()限制查询的字段,如: $good->field('goods_id,goods_name'); 3.limit(长度) 限制查询的条数,limit(偏移量,长度),如: $goods->limit(6); //偏移量(页码-1)*长度 4.order()排序查询 order by,如: $goods->order('goods_price desc');//讲真:和mysql语句基本一致,就是定的变量查询不同罢了,所谓外换内不换 5.group()分组查询group by,如: $model->group(分组条件); 6.having条件设置方法,having设置查询条件的效果与where使用效果类似 区别: where:语句条件字段,必须是"数据表中存在的"字段 having:语句条件字段,必须是"查询结果集中"存在的字段
数据添加~
1.AR(Active Record活跃记录)方式 $model->属性(字段);//属性字段与数据表字段一致.否则不允许写入数据.如: $model()->goods_name = "nokia";$z = $goods->add(); 2.修改 数据修改必须设置条件,主键id或者where()方法,二者选其一,否则执行的时候 失败. $model->save(); 3.模型model删除数据 $z = $model->where("password='2345'")->delete(); 或 $model->user_id = 8; $z = $moder->delete(); 或 $z = $moder->delete(10); $z = $moder->delete("10,21"); 4.连贯操作 order 排序,order字符串,多个条件的话用英文逗号隔开,如: $data = M('user')->order('score desc,id asc')->select(); Sql语句的优化: TP,execute和query()方法都可以在参数里直接输入sql语句: execute()执行insert或update等sql语句,返回的总行数,受影响的记录数. query()常用来执行select等语句,返回array()将返回数据集. literal:之所以用标签的原因 b9b3 是,防止代码被模板引擎误当做标签解析,而literal标签就是保持原样的输出. exexute() ddl(数据定义语言),dml(数据操作语言),dtl(数据事务语言),dcl(数据控制语句)
这里分享的是我最初学习tp的方法,不会的都会记下来,尤其是最开始接触tp框架的时候,要把整个框架目录的大致分类理清楚,这样子 写代码和更改代码的时候,就会知道具体的是在哪个里面执行.代码在哪个目录下跑起来,整个框架熟悉了,之后的便是应用MVC原理开发的问题了,所有的框架无外乎这三种模式.框架只是方便了我们的开发进程,不是说会框架了,就一定能做好项目的开发,基础还是基本,基础扎实,所有的框架都会得心应手~一起努力O(∩_∩)O~~~