十六、PHP面向对象
(一) 类:抽象事物 | 模板
类定义:
Class 类名{
类体:属性----变量
方法【功能|行为】---函数
}
类的特点: 继承 封装 多态
继承: 一个类复用另一个类的代码
Class A extends B{ A子类 B父类}
封装:类是属性和方法的集合
多态:一个类实例的相同方法在不同情形有不同的表现形式
构造函数:专门对类进行初始化的方法
特点:在实例化对象时,自动调用
析构函数:专门对类的资源进回收的方法
特点:当对象不被引用时,自动调用
权限访问关键字:
public : 公有的,如果属性与方法由public修饰,那么在本类及子类的内外都可用
private :私有的,如果属性与方法由private修饰,那么只在本类的内部可用
Protected:保护的,如果属性与方法由protected修饰,那么只在本类及子类的内部可用
方法的重载:子类定义与父类名称相同的方法
Final关键字 :由final修饰的方法,不能被重载,由final修饰的类不能被继续
运用 :
怎样设计一个类
原则:以功能或需求为导向
封装分页类:1 求出页数 2 显示页码的功能 3 下一页 4 上一页
封装数据库操作类: 1 连接 2 执行sql 3 提取结果集
(二)对象:具体事物 | 类实例化的产物
对象:实例化类
对象 = new 类名()
(三)接口:规范
格式:interface 接口名称{
方法;
属性;
}
特点:
1、属性与方法必须是公有的
2、方法不能有实现体
3、实现接口的类去实现接口中的抽象方法
实现接口:implements 用类去实现接口
格式:class 类名 implements 接口名{
方法:
}
用处:如果有多个物体有相同的方法或功能时可以用接口去实现
(四)抽象类:类的模板
定义:Abstract Class 类名{
属性
方法|可以是抽象方法
}
特点:
1 抽象不能被实例化,只能用来被继承
2 含有抽象方法的类,必须声明为抽象类
3 抽象方法不能有具体实现,实现由子类来实现
(五)命名空间
是什么:是一种封装事物的方法
作用:解决命名冲突
定义:Namespace 名称\名称\x
怎么样使用带有命名空间的类
方式一、New 命名空间的名称\类名()
方式二、Use 命名空间的名称\类名
New 类名()
(六)类的特性
1 静态化成员 常量
访问方式一 类外: 类名::常量 类名::静态成员
访问方式二 类里: self::常量 self::静态成员
注意:
1、静态方法里不能调用非静态方法
2、常量不属于对象,所以不能通过对象来访问,直接通过类名来访问或是self
3、在这里访问主要以 :: 范围解析操作符来访问 而不能用$this , 因为$this 是访问对象的
2 魔术方法
__get($x) 当获取一个没有定义的属性,会自动调用
作用:动态获取
__set($x,$y) 当给一个没有定义的属性赋值,会自动调用
作用:动态赋值
这两个主要解决私有的属性能在外部使用
__call 在对象中调用一个不可访问方法时,会自动调用
作用:防止出错,健壮 鲁棒性
__unset 对一个不可访问的属性进行unset调用
作用:防止出错,健壮 鲁棒性
__isset 当对不可访问属性调用 isset() 或 empty() 时,会自动调用
isset判断变量是否定义,如果没有定义,返回false;否则为 true
empty判断变量是否为空,如果是空的返回true;否则为 false
“”(为空字符串);
0(也是空的);
0.0(作为浮点型数的0);
“0”(作为0的字符串);
Null false
array() (一个空数组) $var; (一个声明了,但是没有值的变量)
__ sleep 当对对象进行serialize(序列化)时,会调用
作用:对序列化的信息进行筛选
__wakeup 当对对象进行unserilize(反序例)时,会调用
作用:恢复,初始化
3 关键字
Clone 复制一个对象
注意:对象的赋值是按引用传递
instanceof : 用检测对象是不是由某个类或某个类的子类所实例化
Parent 代表父类,可以访问父类的方法 parent::方法名();
4 辅助函数
method_exists($object ,$method_name) 检查类的方法是否存在
5、Trait 一种代码复用的方法或机制
对类进行水平扩展
6、文件处理函数
打开模式:
r : 只读模式打开,文件不存在报错,指针定位在头部;
r + : 读写模式打开,文件不存在报错,指针定位在头部;
w :只写模式打开,打开后文件会清空文件内容,文件不存在时会自动创建,指针定位在头部;
w + :读写模式打开,打开后文件会清空文件内容,文件不存在时会自动创建,指针定位在头部;
a:只写模式打开,文件不存在会自动创建,指针定位在尾部;
a+:读写模式打开,文件不存在会自动创建,指针定位在尾部;
打开和读取文件内容
fopen(文件名或资源,打开模式) 打开文件名;
fgetc(文件名或资源) 从一个资源获取一个字节;
fgets(文件名或资源,[长度]) 从一个资源中获取一行字符(1024个字节);
fread(文件名或资源,字节长度)从一个资源中获取指定长的字节数;
fgetss(文件名或资源)从一个资源中获取一行(1024字节),也可以过滤html或php标签;
添加和释放数据
fwrite(资源,文本字符串)将一个字符串添加到文件资源当中去;
fclose(资源)释放资源;
readfile(文件名)把文件内容读到输出缓冲;
fpassthru(文件资源)从文件当前指针位置读取内容,直到结束写到输出缓冲;
file(文件名|url路径)把文件的内容读到一个数组中,文件的每一行,就是一个数组的每个元素。file返回的是一个数组;
file_get_contents(文件名)读取一个文件的内容;
file_put_contents(文件名,字符串)把一个字符串写入到文件中;
unlink(文件名)删除文件;
copy(文件名1,文件名2) 文件1复制到文件2;
rename(旧文件名,新文件名) 给文件重命名或是剪切;
frell(文件名) 输出文件当前指针的位置;
feof(文件名)检测指针是否到达末尾;
rewind(文件名)让文件资源指针移到头部:
fseek()移动文件指针;
flock(资源,LOCK_EX) 文件锁 ,可以让业务的执行按排队方式来运作;
filesize(文件名) 取得文件名的大小(按字节来算)
filemtime(文件名)取得文件的创建的时间或修改时间,返回一个时间戳
pathinfo() 返回文件的路径信息 返回的是一个数组
dirname() 返回文件的路径
上传文件函数
file_uploads=on 服务器是否开启上传模式;
upload_tmp_dir=临时文件 上传文件临时保存;
upload_max_filesize=2M 上传文件的最大值为2m;
move_uploadfile(临时文件,目的地) 用来搬临时文件;
$_FILES();服务端接收到的是一个二维数组;
uniqid();产生一个不一样的id号,当做文件的前缀;后缀通过strrchr()函数来完成;
7、文件上传
原理:
服务端接收到的是一个二维数组:
Name 文件名
Type 文件的类型
Tmp_name 临时保存在服务器上的文件
Error 错误信息 0,没有错误发生,文件上传成功
1,上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值。
Size 上传的文件大小,按字节算
上传函数:
move_uploaded_file(临时文件, 目的地) 如果成功返回true 否则为false
8、目录函数
File_exists() 检查文件或目录是否存在
is_dir()判断文件是不是一个目录
opendir()打开一个目录,返回一个目录资源
readdir()读取目录资源
closedir()关闭目录资源
mkdir(‘文件名’,777)新建目录
rmdir()删除目录 只能删除空目录
chdir() 改变当前工作目录
getcwd() 获取当前工作目录
9、下载
方式一:用超链接
方式二:把文件附件的形式输出
Header(“Content-Disposition:attachment;filename=”.文件名)
File_get_contents 获取1m 以下的文件
Fopen fgetc fclose 获取打的文件
Ini_set(‘max_execution_time’,0) 更改下载的执行时间,更改系统的配置;
以上就是个人整理出来的PHP基础,供大家参考和学习。
领取专属 10元无门槛券
私享最新 技术干货