抽象 vs 接口
抽象类是一种不能被实例化的类,只能作为其他类的父类来使用。
抽象类是通过关键字 abstract 来声明的。
抽象类与普通类相似,都包含成员变量和成员方法,两者的区别在于,抽象类中至少要包含一个抽象方法,
抽象方法没有方法体,该方法天生就是要被子类重写的。
抽象方法的格式为:abstract function abstractMethod();
因为php中只支持单继承,如果想实现多重继承,就要使用接口。也就是说子类可以实现多个接口。
接口是通过interface关键字来声明的,接口中的成员常量和方法都是public的,方法可以不写关键字public,
接口中的方法也是没有方法体。接口中的方法也天生就是要被子类实现的。
抽象类和接口实现的功能十分相似,最大的不同是接口能实现多继承。在应用中选择抽象类还是接口要看具体实现。
子类继承抽象类使用extends,子类实现接口使用implements。
文件上传注意事项
- 首现要在php.ini中开启文件上传;
- 在php.ini中有一个允许上传的最大值,默认是2MB。必要的时候可以更改;
- 上传表单一定要记住在form标签中写上enctype=”multipart/form-data”;
cookie作用
- 记录用户访问的部分信息
- 在页面间传递变量
php 的数据类型
php支持8种原始数据类型。
包括:
四种标量类型(布尔型boolean,整型interger,浮点型float/double , 字符串string)
两种复合类型(数组array , 对象object)
两种特殊类型(资源resource,NULL)
页面乱码处理
- 查看当前页面meta标签的charset
- header函数指定的charset
- 数据库的字符集
ajax缺点
不利于seo推广优化,因为搜索引擎无法直接访问到ajax请求的内容
字符串转整型
- 强制类型转换
- settype(字符串变量,整型)
- intval(字符串变量)
处理正则表达式
preg_quote -- 转义正则表达式字符 正则表达式的特殊字符包括:. \ + * ? [ ^ ] $ ( ) { } = ! < > | : -
preg_replace -- 执行正则表达式的搜索和替换
preg_replace_callback -- 用回调函数执行正则表达式的搜索和替换
preg_split -- 用正则表达式分割字符串
字符串的常用函数
trim();--去除空格
strlen();--字符串长度
substr();--截取字符串
str_replace();--替换字符串函数
substr_replace() -- 对指定字符串中的部分字符串进行替换
strstr();--检索字符串函数
explode();--分割字符串函数
strcasecmp();--比较字符串函数
进程 线程
进程和线程都是一个时间段的描述,是CPU工作时间段的描述,不过是颗粒大小不同
进程的颗粒度太大,每次都要有上下文环境的调入,保存,调出。
线程是共享了进程的上下文环境,的更为细小的CPU时间段
留意一下
- count 可以递归计算数组
- echo可以一次输出多个值,中间用逗号隔开。而print一次只能输出一个值
- include 有返回值,require 没有
- 当对一个不可见的对象属性使用empty() 时,__isset()方法如果存在的话,它将会被调用