知识扩展
1. 图片的上传大小受哪一些限制?
答:浏览器
其实php.ini文件里面
1. upload_max_filesize = 2M 限制单个文件上传大小
2. post_max_size = 8M 整个表单允许数据(4张)
3. 在上传类里面限制图片大小 $upload->maxSize
2. 扩展ajax如何做无刷新分页?
答:
1. 为每一个a链接绑定一个点击事件
2. 需要获取每个a链接的href
3. 写一个简单正则,然后获取页面 (\d+) ===11
4. 发送一个ajax调用,并传递这个页码参数
5. 在服务器脚本接受这个ajax调用,获取页码参数,在model里面根据页面获取数据(limit)
6. 数据处理成json格式,然后在返回给前台(浏览器)
7. 对数据遍历,然后拼接成字符串_html
8. 获取需要填充地方$(“contianer”).html(_html) html默认直接覆盖
9. 实现
3. 事件委托(代理)?(js必问)冒泡
答:把事件交给别人做,上层元素(冒泡特性)
在实际的事件绑定过程之中,如果绑定的元素过多,那么需要更多的开销来绑定事件。如果,只绑定一个事件,利用事件冒泡获取对应的元素(event事件源),拿下面的例子说,那就只需要给div绑定一个事件就可以了,event代表当前被操作的DOM对象 event.target 获取当前点击的对象 做出判断 href
3. 什么是js里面的闭包?
答:函数内部返回函数(包含当前定义时候的一些变量信息,可以变量信息一直保持)做一个计数器。
function counter(){
var num=0;
return function(){
num++;
}
}
var jishuqi = counter();
jishuqi();
4. 原型链和作用域链?
答:原型存在的意义就是为了继承
原型链:在构造函数有一个prototype属性,这个属性指向一个实际存在的对象(json new Dog)
new 构造函数 实例化的对象 __proto__ 指向 === new Dog 方法或者属性
作用域链:在js中内层作用域是可以调用外层作用域里面的变量,但是外层是不能调用内层变量信息。
函数是不是变量?
函数是不是对象?
var f1 = function(){};
var test1 = new Test();
5. TP中的U函数?
答:是利用程序自动的生成URL地址
第一个参数,就是生成的URL地址,第二个参数就是GET参数index.php?id=12
第三个参数就是是否生成伪静态 默认是true
6. 一般来说,实际业务是怎么样做的?
答:在实际开发中,一般不做物理行删除,只做伪删除,在商品表中增加一个is_delete字段来处理,然后在做一个回收站,在回收站可以还原数据,也可以彻底删除(伪删除)还是假删除。
现在我们的业务,真实删除?
思考:如果在删除之前,还有图片信息该如何考虑?
数据删了?图片还能删除?
1. 先把图片的地址记录(先根据ID找到图片地址),然后在删除
2. 钩子函数,在实际删除之前,可以使用删除前置钩子,在这个钩子函数里面来根据ID获取图片地址,然后在删除
8. 可以做伪删除?
注意: 在做编辑操作的时候,需要使用前置钩子完成图片的更新(原图片的删除,新图片的增加)?
_before_update($data,$options)
1. 先根据ID获取原图片地址,然后使用 unlink 删除
2. $data[‘img’] = $img