PHP基础(四)

十六、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基础,供大家参考和学习。

  • 发表于:
  • 原文链接:https://kuaibao.qq.com/s/20190202G08GOR00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

同媒体快讯

扫码关注云+社区

领取腾讯云代金券