暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

PHP基础(四)

知识共鸣 2019-02-02
367

十六、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+:读写模式打开,文件不存在会自动创建,指针定位在尾部;

打开和读取文件内容

<1>fopen(文件名或资源,打开模式)  打开文件名;

<2>fgetc(文件名或资源)  从一个资源获取一个字节;

<3>fgets(文件名或资源,[长度])  从一个资源中获取一行字符(1024个字节);

<4>fread(文件名或资源,字节长度)从一个资源中获取指定长的字节数;

<5>fgetss(文件名或资源)从一个资源中获取一行(1024字节),也可以过滤html或php标签;

添加和释放数据

<6>fwrite(资源,文本字符串)将一个字符串添加到文件资源当中去;

<7>fclose(资源)释放资源;

<9>readfile(文件名)把文件内容读到输出缓冲;

<10>fpassthru(文件资源)从文件当前指针位置读取内容,直到结束写到输出缓冲;  

<11>file(文件名|url路径)把文件的内容读到一个数组中,文件的每一行,就是一个数组的每个元素。file返回的是一个数组;

<12>file_get_contents(文件名)读取一个文件的内容;

<13>file_put_contents(文件名,字符串)把一个字符串写入到文件中;

<14>unlink(文件名)删除文件;

<15>copy(文件名1,文件名2) 文件1复制到文件2;

<16>rename(旧文件名,新文件名) 给文件重命名或是剪切;

<17>frell(文件名)  输出文件当前指针的位置;

<18>feof(文件名)检测指针是否到达末尾;

<8>rewind(文件名)让文件资源指针移到头部:

<19>fseek()移动文件指针;

<20>flock(资源,LOCK_EX) 文件锁 ,可以让业务的执行按排队方式来运作;

<21>filesize(文件名) 取得文件名的大小(按字节来算) 

<22>filemtime(文件名)取得文件的创建的时间或修改时间,返回一个时间戳

<23>pathinfo() 返回文件的路径信息  返回的是一个数组

<24>dirname()  返回文件的路径

上传文件函数

<21>file_uploads=on 服务器是否开启上传模式;

<22>upload_tmp_dir=临时文件  上传文件临时保存;

<23>upload_max_filesize=2M  上传文件的最大值为2m;

<24>move_uploadfile(临时文件,目的地) 用来搬临时文件;

<25>$_FILES();服务端接收到的是一个二维数组;

<26>uniqid();产生一个不一样的id号,当做文件的前缀;后缀通过strrchr()函数来完成;  

7、文件上传

原理:

服务端接收到的是一个二维数组:

           

Name 文件名

Type 文件的类型

Tmp_name 临时保存在服务器上的文件

Error 错误信息   0,没有错误发生,文件上传成功

1,上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值。

Size 上传的文件大小,按字节算

上传函数:

move_uploaded_file(临时文件, 目的地)  如果成功返回true 否则为false

8、目录函数

<1>File_exists() 检查文件或目录是否存在

<2>is_dir()判断文件是不是一个目录

<3>opendir()打开一个目录,返回一个目录资源

<4>readdir()读取目录资源

<5>closedir()关闭目录资源

<6>mkdir(‘文件名’,777)新建目录

<7>rmdir()删除目录  只能删除空目录

<8>chdir() 改变当前工作目录

<9>getcwd() 获取当前工作目录

9、下载

方式一:用超链接

方式二:把文件附件的形式输出

Header(“Content-Disposition:attachment;filename=”.文件名)  

File_get_contents  获取1m  以下的文件    

Fopen  fgetc  fclose   获取打的文件

Ini_set(‘max_execution_time’,0)  更改下载的执行时间,更改系统的配置; 

以上就是个人整理出来的PHP基础,供大家参考和学习。

文章转载自知识共鸣,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论