鱼勇士 鱼勇士
关注数: 25 粉丝数: 74 发帖数: 10,201 关注贴吧数: 174
PHP中通过global和$GLOBALS来使用全局变量 PHP的全局变量和C语言中有点不同,C语言中全局变量可以在函数内部直接使用,PHP不能直接使用,需要用特殊的方式来使用全局变量。 PHP在函数中使用全局变量有两种方式:global和$GLOBALS数组。 global——在函数内部产生一个外部变量的引用,可以通过该引用来使用外部变量的值,也可以通过该引用修改外部变量的值,但是并不能通过引用清除外部变量。下面来看例子。执行结果如下:可以看出外部变量在函数内部是不能直接使用的,我们在函数内部加入global声明如下:执行结果如下:此时已经可以在函数内部使用变量$global了,我们继续修改代码如下:再次执行结果如下:通过该次执行结果可以看出通过函数内部的引用可以修改外部变量的值(由5修改为3),虽然函数内部使用了unset($global),但是并不能清除外部变量,在函数外面$global变量依然是存在的。 $GLOBALS数组 在函数外部定义的变量都会存在于$GLOBALS数组中,变量的名字作为$GLOBALS数组的键。 在函数内部也可以通过$GLOBALS数组的方式来访问外部变量,与global不同的是通过$GLOBALS数组的方式访问外部变量不是引用,而是真实访问外部变量,所以可以通过$GLOBALS数组的方式来访问、修改和清除外部变量。我们对上面的例子稍作修改如下:执行结果如下:这里可以看出可以通过$GLOBALS数组的方式来访问、修改和清除外部变量。 注意:PHP中全局变量不是应用于整个网站,而是应用于当前页面,包括require和include的所有文件。 本文转自微信公众平台:PHP技术宅
PHP异常(Exception)处理 PHP5提供了一种面向对象的错误处理方法——异常处理。 异常处理用于在指定的错误发生时自定义脚本的执行流程。 异常处理的代码结构如下: try { //do something or throw exception } catch( Exception $e ) { //do something to deal the exception } 可能抛出异常的代码必须放到try代码块内,每一个try至少要有一个对应的catch(try代码块后面需要紧跟catch),可以使用多个catch来捕获不同类型的异常。当一个异常被抛出时,try代码块内代码将停止执行,PHP将尝试查找第一个能与之匹配的catch,执行catch里面的语句,然后执行catch之后的语句。 下面来看一个例子:执行结果如下:可见数据库连接抛出的异常之后echo "hello"语句被停止执行,然后catch捕获了异常,执行catch里面的语句,最后执行catch之后的echo "world"语句,这就是异常抛出捕获的过程。 catch后面的Exception是PHP里面定义的一个很基本的类,我们可以对它进行扩展,根据需要添加自定义处理,这和其他类的扩展是一样的。 下面我们来扩展一下:执行结果如下:可以看到我自定义的异常处理方法mymessage()生效了。 如果异常没有被捕获,PHP会产生一个致命的错误,看下面的例子:执行结果如下:可以看到存在未捕获的异常,产生了一个致命的错误,为了避免这种情况,我们通过set_exception_handler() 设置一个处理所有未捕获异常的函数:执行结果如下:
1 下一页