final有什么用?

final用于声明方法和类,分别表示方法不可以被覆盖、类不可被继承。

final方法:当一个方法被声明为final时,不允许任何子类重写这个方法,但子类可以使用这个方法。注意:final不能修饰类的成员变量

final类:当一个类被声明为final时,此类不能被继承,所有方法都不能被重写。注意:一个类不能既被声明为abstract,又被声明为final

finally有什么用?

PHP5.5新增了finally模块。finally作为异常处理的一部分,它只能用在try/catch语句中,并且附带着一个语句块,表示这段语句最终一定被执行,经常用在需要释放资源的情况下。try/catch/finally一般的使用方法为:

img

assert有什么作用?

static有什么用?

staticPHP语言中主要用来修饰成员变量和成员方法

  1. static修饰成员变量

PHP类提供了两种类型的变量,用static关键字修饰的静态变量和没有static关键字修饰的实例变量。

静态变量属于类,在内存中只有一个拷贝(所有实例都共享静态变量),只要静态变量所在的类被加载,这个静态变量就会被分配空间,因此就可以被使用了。实例变量属于对象,只有对象被创建后,实例变量才会被分配空间,才能被使用,它在内存中存在多个拷贝。

  1. static修饰成员方法

PHP提供了static方法和非static方法。static方法是类的方法,不需要创建对象就可以被调用,非static方法是对象的方法,只有对象被创建出来后才可以被使用。

注意:static方法不能调用非static的方法,只能访问所属类的静态成员变量和成员方法,因为当static方法被调用的时候,这个类的对象可能还没被创建,即使已经被创建了,也无法确定调用哪个对象的方法。同理,static变量也不能访问非static的变量。

global有什么作用?

主要用于函数内声明变量为全局变量

引申:global$GLOBALS有什么区别?

本质区别:global声明的变量只是全局变量的一个同名引用,而$GLOBALS是全局变量本身。

this、self、parent的区别是什么?

include和require有什么区别?

区别如下:

  1. include()在执行的时候,被引用的文件每次都要进行读取和评估;而对于require()来说,文件只被处理一次(直接用引用文件的内容替换require语句),因此,对于一段可能被多次使用的代码,require有更高的效率

  2. 在使用include引入文件的时候,如果碰到错误,会给出警告,并继续执行后续的代码;在使用require引入文件的时候,如果碰到错误,会给出致命错误,并终止后续代码的执行

  3. include有返回值,require没有

  4. include在用到时才加载,而require在一开始就加载,因此,include()是有条件包含函数,而require()则是无条件包含函数,所以require通常用来导入静态的内容,include更适合于导入动态的程序代码

  5. 它们经常和“_once”一起使用,include_once/require_once会先检查被引用的文件是否已经被导入,若是,就不会再次导入同样的内容。这种使用方法可以避免文件被重复引用。但是由于include_once/require_once每次都需要检查文件是否已经被导入,因此与include/require相比,有更低的性能。

break、continue、return有什么区别和联系?

break:终止当前循环

注意:可以使用break后跟上指定的数字来终止指定层数的循环

continue:跳出当前循环

return:表示从一个方法返回(返回一个值或其他复杂类型),可以使程序控制返回到调用它的地方

引申:PHP中,如何使用goto语句?

PHP中通过goto操作符跳转到程序的另一个位置继续执行,PHPgoto有一定限制,目标位置只能位于同一个文件或者作用域,即不能跳出一个函数或者类方法,不能跳入到另一个函数,同时不能跳入到任何循环或者switch结构中,可以跳出循环或switch,通过使用goto代替多层的break

switch有什么用?