PHP基础(三):关键字
final有什么用?
final
用于声明方法和类,分别表示方法不可以被覆盖、类不可被继承。
final
方法:当一个方法被声明为final
时,不允许任何子类重写这个方法,但子类可以使用这个方法。注意:final
不能修饰类的成员变量
final
类:当一个类被声明为final
时,此类不能被继承,所有方法都不能被重写。注意:一个类不能既被声明为abstract
,又被声明为final
finally有什么用?
PHP5.5
新增了finally
模块。finally
作为异常处理的一部分,它只能用在try/catch
语句中,并且附带着一个语句块,表示这段语句最终一定被执行,经常用在需要释放资源的情况下。try/catch/finally
一般的使用方法为:
assert有什么作用?
static有什么用?
static
在PHP
语言中主要用来修饰成员变量和成员方法
static
修饰成员变量
PHP
类提供了两种类型的变量,用static
关键字修饰的静态变量和没有static
关键字修饰的实例变量。
静态变量属于类,在内存中只有一个拷贝(所有实例都共享静态变量),只要静态变量所在的类被加载,这个静态变量就会被分配空间,因此就可以被使用了。实例变量属于对象,只有对象被创建后,实例变量才会被分配空间,才能被使用,它在内存中存在多个拷贝。
static
修饰成员方法
PHP
提供了static
方法和非static
方法。static
方法是类的方法,不需要创建对象就可以被调用,非static
方法是对象的方法,只有对象被创建出来后才可以被使用。
注意:static
方法不能调用非static
的方法,只能访问所属类的静态成员变量和成员方法,因为当static
方法被调用的时候,这个类的对象可能还没被创建,即使已经被创建了,也无法确定调用哪个对象的方法。同理,static
变量也不能访问非static
的变量。
global有什么作用?
主要用于函数内声明变量为全局变量
引申:global
和$GLOBALS
有什么区别?
本质区别:global
声明的变量只是全局变量的一个同名引用,而$GLOBALS
是全局变量本身。
this、self、parent的区别是什么?
include和require有什么区别?
区别如下:
include()
在执行的时候,被引用的文件每次都要进行读取和评估;而对于require()
来说,文件只被处理一次(直接用引用文件的内容替换require
语句),因此,对于一段可能被多次使用的代码,require
有更高的效率在使用
include
引入文件的时候,如果碰到错误,会给出警告,并继续执行后续的代码;在使用require
引入文件的时候,如果碰到错误,会给出致命错误,并终止后续代码的执行include
有返回值,require
没有include
在用到时才加载,而require
在一开始就加载,因此,include()
是有条件包含函数,而require()
则是无条件包含函数,所以require
通常用来导入静态的内容,include
更适合于导入动态的程序代码它们经常和“_once”一起使用,
include_once/require_once
会先检查被引用的文件是否已经被导入,若是,就不会再次导入同样的内容。这种使用方法可以避免文件被重复引用。但是由于include_once/require_once
每次都需要检查文件是否已经被导入,因此与include/require
相比,有更低的性能。
break、continue、return有什么区别和联系?
break
:终止当前循环
注意:可以使用break
后跟上指定的数字来终止指定层数的循环
continue
:跳出当前循环
return
:表示从一个方法返回(返回一个值或其他复杂类型),可以使程序控制返回到调用它的地方
引申:PHP
中,如何使用goto
语句?
PHP
中通过goto
操作符跳转到程序的另一个位置继续执行,PHP
中goto
有一定限制,目标位置只能位于同一个文件或者作用域,即不能跳出一个函数或者类方法,不能跳入到另一个函数,同时不能跳入到任何循环或者switch
结构中,可以跳出循环或switch
,通过使用goto
代替多层的break
。