适合php初学者的php基础知识汇总

发布时间:2020-06-20编辑:脚本学堂
适合php初学者的一些基础知识,也可算是一些经验积累吧,有需要的朋友,可以参考下。

5、类的访问控制 控制类的属性和方 法
如果对类的属性指定了访问控制类型,则关键字var需省略
public 在类的内部和外部都可以访问。该选项是默认选项。
使用“::”运算符可以在没有创建任何类的实例的情况下访问类中的函数或者变量
格式如下:类名::函数类名::变量
private 只能在类的内部进行访问
protected 只能在该类和其子类中使用

6、构造函数
构造函数在一个类被实例化时自动调用。PHP不支持多个构造函数。
构造函数的语法格式如下:function __construct(参数1,参数2,...){}

7、析构函数
析构函数会在类对象被销毁前调用,通常用来设定对象被销毁前需要完成的一些操作。销毁对象最简单的方法是直接对其赋值NULL
析构函数语法:function __destruct(){}
脚本在执行结束时,PHP会自动销毁内存中的所有对象。因此,对于一般的类对象不需要显式地定义析构函数。
但是如果类对象在实例化时创建了不太容易销毁的数据,如果数据存储在数据库中而不是内存中,就应当定义一个析构函数,在类
对象销毁时使这些数据能够正常被销毁。

8、静态属性和方法
静态属性和方法需要使用关键字“self::”来引用,其他介绍前文已有

9、类运算符instanceof
可以判断一个对象是否是一个类的实例

10、继承已有的类
继承使用关键字extend

11、类的重载
重载是指在子类中再次定义与父类相同的属性和方法。类的重载使得在子类中可以给某个属性赋予一个与其父类中不相同的值,
也可以给某个方法指定一个与其父类中不相同的功能。

12、访问父类中的属性和方法
一个子类可以通过继承和重载得到父类中的属性和方法,并能够重写所继承的属性和方法。但有些时候,在子类中会需要直接
调用父类中的方法。在PHP中可以使用关键字“parent::”来实现对父类中属性和方法的访问。

13、使用final关键字禁止继承和重载
当在一个函数定义前面使用关键字“final”时,表示该函数将不能被任何子类重载。
如果不希望让一个类继承,只需在定义类时为其添加“final”关键字
如果一个类中的属性或方法被指定为“private”,则该属性或方法将不能被继承
如果一个类中的属性或方法被指定为“protected”,则该属性或方法可以被子类继承,但不能在类外部直接访问
如果一个类中的属性或方法被指定为“public”,则该属性或方法不仅可以被子类继承,而且在任何地方都可以被访问

14、抽象类和抽象方法
抽象类是不能实例化的类,只能作为其他类的父类使用。所以继承抽象类的子类都必须实现所有的抽象方法。
在PHP中使用关键字“abstract”定义一个抽象类和方法。

15、接口
接口是一种特殊的抽象类,这种抽象类中通常只包含抽象方法,不定义属性。属性的定义和抽象方法的实现交给实现接口的类来完成。
定义接口使用关键字“interface” 实现接口使用关键字“implements”

16、实现多个接口
PHP中的类不允许多重继承,但允许实现多个接口

17、对象的赋值
目标对象 = clone 原对象; 复制后两个对象完全一样,但互不干扰
在PHP中还可以使用__clone()方法调整对象赋值的行为。默认情况下,该函数将建立一个与原对象拥有相同属性和方法的对象,如果希望
在赋值后改变原对象中的某些内容,只需在方法中重写原对象中的相应的属性和方法即可。该方法可以使用$this指针

18、自动加载类
PHP专门提供了__autoload()函数,来自动加载所需的类。
在需要加载时,该函数会自动被调用,同时类名会以参数的形式传递给__autoload()函数

19、处理不存在方法调用
当调用类中一个不存在的方法将会产生致命错误,PHP提供了__call()方法可以对这种类型的错误进行处理。

20、对象的序列化
为了方便变量的传输和存储,通常会在传输和存储变量前将其转化成为字符串的字节流形式,在需要使用这些变量时,再将其还原为
原来的变量,这个过程成为序列化和反序列化。
为了方便传输和存储类对象,也可以对齐进行序列化和反序列化处理。PHP中使用函数serialize()来序列化一个对象,其参数为对象名,
返回值为序列化后得到的字符串。反序列化使用unserialize()函数,其参数为字符串,返回原来的对象。
对象在序列化的时候,会自动调用一个名为__sleep()方法,完成一些睡前的事情,该方法不接收任何参数,但会返回一个数组,数组中
指定需要序列化的属性,未被包含的属性将在序列化时被忽略。如果没有指定__sleep()方法,PHP将对所有的属性进行序列化。
对象在反序列化时,会自动调用一个名为__wakeup()的方法,做一些对象醒来就要做的动作。