cookie 常用于识别用户。
什么是 Cookie?
cookie 常用于识别用户。cookie 是做事器留在用户打算机中的小文件。每当相同的打算机通

过浏览器要求页面时,它同时会发送 cookie。通过 PHP,您能够创建并取回 cookie 的值。
如何创建 cookie?
setcookie() 函数用于设置 cookie。
注释:setcookie() 函数必须位于 <html> 标签之前。
语法
setcookie(name, value, expire, path, domain);
例子
不才面的例子中,我们将创建名为 \"大众user\公众 的 cookie,把为它赋值 \"大众Alex Porter\"大众。我们也规
定了此 cookie 在一小时后过期:
<?php
setcookie(\"大众user\"大众, \公众Alex Porter\"大众, time()+3600);
?>
<html>
<body>
</body>
</html>
注释:在发送 cookie 时,cookie 的值会自动进行 URL 编码,在取回时进行自动解码(为防
止 URL 编码,请利用 setrawcookie() 取而代之)。
如何取回 Cookie 的值?
PHP 的 $_COOKIE 变量用于取回 cookie 的值。
不才面的例子中,我们取回了名为 \"大众user\"大众 的 cookie 的值,并把它显示在了页面上:
<?php
// Print a cookie
echo $_COOKIE[\公众user\公众];
// A way to view all cookies
print_r($_COOKIE);
?>
不才面的例子中,我们利用 isset() 函数来确认是否已设置了 cookie:
<html>
<body>
<?php
if (isset($_COOKIE[\"大众user\公众]))
echo \"大众Welcome \"大众 . $_COOKIE[\"大众user\"大众] . \"大众!<br />\"大众;
else
echo \公众Welcome guest!<br />\公众;
?>
</body>
</html>
如何删除 cookie?
当删除 cookie 时,您应该使过期日期变更为过去的韶光点。
删除的例子:
<?php
// set the expiration date to one hour ago
setcookie(\"大众user\"大众, \公众\"大众, time()-3600);
?>
如果浏览器不支持 cookie 该怎么办?
如果您的运用程序涉及不支持 cookie 的浏览器,您就不得不采纳其他方法在运用程序中从
一张页面向另一张页面通报信息。一种办法是从表单通报数据(有关表单和用户输入的内容,
稍早前我们已经在本教程中先容过了)。
下面的表单在用户单击提交按钮时向 \"大众welcome.php\"大众 提交了用户输入:
<html>
<body>
<form action=\"大众welcome.php\"大众 method=\"大众post\"大众>
Name: <input type=\公众text\"大众 name=\公众name\"大众 />
Age: <input type=\"大众text\公众 name=\"大众age\公众 />
<input type=\"大众submit\"大众 />
</form>
</body>
</html>
取回 \"大众welcome.php\"大众 中的值,就像这样:
<html>
<body>
Welcome <?php echo $_POST[\"大众name\"大众]; ?>.<br />
You are <?php echo $_POST[\"大众age\"大众]; ?> years old.
</body>
</html>
PHP Sessions
PHP session 变量用于存储有关用户会话的信息,或变动用户会话的设置。Session 变量保存
的信息是单一用户的,并且可供应用程序中的所有页面利用。
PHP Session 变量
当您运行一个运用程序时,您会打开它,做些变动,然后关闭它。这很像一次会话。打算机
清楚你是谁。它知道你何时启动运用程序,并在何时终止。但是在因特网上,存在一个问题:
做事器不知道你是谁以及你做什么,这是由于 HTTP 地址不能坚持状态。
通过在做事器上存储用户信息以便随后利用,PHP session 办理了这个问题(比如用户名称、
购买商品等)。不过,会话信息是临时的,在用户离开网站后将被删除。如果您须要永久储
存信息,可以把数据存储在数据库中。
Session 的事情机制是:为每个访问者创建一个唯一的 id (UID),并基于这个 UID 来存储变
量。UID 存储在 cookie 中,亦或通过 URL 进行传导。
开始 PHP Session
在您把用户信息存储到 PHP session 中之前,首先必须启动会话。
注释:session_start() 函数必须位于 <html> 标签之前:
<?php session_start(); ?>
<html>
<body>
</body>
</html>
上面的代码会向做事器注册用户的会话,以便您可以开始保存用户信息,同时会为用户会话
分配一个 UID。
存储 Session 变量
存储和取回 session 变量的精确方法是利用 PHP $_SESSION 变量:
<?php
session_start();
// store session data
$_SESSION['views']=1;
?>
<html>
<body>
<?php
//retrieve session data
echo \公众Pageviews=\"大众. $_SESSION['views'];
?>
</body>
</html>
输出:
Pageviews=1
不才面的例子中,我们创建了一个大略的 page-view 计数器。isset() 函数检测是否已设置
\"大众views\公众 变量。如果已设置 \公众views\"大众 变量,我们累加计数器。如果 \公众views\"大众 不存在,则我们
创建 \"大众views\公众 变量,并把它设置为 1:
<?php
session_start();
if(isset($_SESSION['views']))
$_SESSION['views']=$_SESSION['views']+1;
else
$_SESSION['views']=1;
echo \"大众Views=\"大众. $_SESSION['views'];
?>
闭幕 Session
如果您希望删除某些 session 数据,可以利用 unset() 或 session_destroy() 函数。
unset() 函数用于开释指定的 session 变量:
<?php
unset($_SESSION['views']);
?>
您也可以通过 session_destroy() 函数彻底闭幕 session:
<?php
session_destroy();
?>
注释:session_destroy() 将重置 session,您将失落去所有已存储的 session 数据。
PHP 发送电子邮件
PHP 许可您从脚本直接发送电子邮件。
PHP mail() 函数
PHP mail() 函数用于从脚本中发送电子邮件。
语法
mail(to,subject,message,headers,parameters)
参数描述
to 必需。规定 email 吸收者。
subject 必需。规定 email 的主题。注释:该参数不能包含任何新行字符。
message 必需。定义要发送的。应利用 LF (\n) 来分隔各行。
headers
可选。规定附加的标题,比如 From、Cc 以及 Bcc。
应该利用 CRLF (\r\n) 分隔附加的标题。
parameters 可选。对邮件发送程序规定额外的参数。
注释:PHP 须要一个已安装且正在运行的邮件系统,以便使邮件函数可用。所用的程序通过
在 php.ini 文件中的配置设置进行定义。请在我们的 PHP Mail 参考手册 阅读更多内容。
PHP 大略单纯 E-Mail
通过 PHP 发送电子邮件的最大略的办法是发送一封文本 email。
不才面的例子中,我们首先声明变量($to, $subject, $message, $from, $headers),然后我们在
mail() 函数中利用这些变量来发送了一封 e-mail:
<?php
$to = \"大众someone@example.com\"大众;
$subject = \"大众Test mail\"大众;
$message = \公众Hello! This is a simple email message.\"大众;
$from = \"大众someonelse@example.com\公众;
$headers = \公众From: $from\"大众;
mail($to,$subject,$message,$headers);
echo \"大众Mail Sent.\公众;
?>
PHP Mail Form
通过 PHP,您能够在自己的站点制作一个反馈表单。下面的例子向指定的 e-mail 地址发送
了一条文本:
<html>
<body>
<?php
if (isset($_REQUEST['email']))
//if \"大众email\"大众 is filled out, send email
{
//send email
$email = $_REQUEST['email'] ;
$subject = $_REQUEST['subject'] ;
$message = $_REQUEST['message'] ;
mail( \公众someone@example.com\公众, \"大众Subject: $subject\公众,
$message, \"大众From: $email\"大众 );
echo \"大众Thank you for using our mail form\"大众;
}
else
//if \"大众email\"大众 is not filled out, display the form
{
echo \"大众<form method='post' action='mailform.php'>
Email: <input name='email' type='text' /><br />
Subject: <input name='subject' type='text' /><br />
Message:<br />
<textarea name='message' rows='15' cols='40'>
</textarea><br />
<input type='submit' />
</form>\公众;
}
?>
</body>
</html>
例子阐明:
1. 首先,检讨是否填写了邮件输入框
2. 如果未填写(比如在页面被首次访问时),输出 HTML 表单
3. 如果已填写(在表单被填写后),从表单发送邮件
4. 当点击提交按钮后,重新载入页面,显示邮件发送成功的
PHP 缺点处理
在 PHP 中,默认的缺点处理很大略。一条会被发送到浏览器,这条带有文件名、
行号以及一条描述缺点的。
PHP 缺点处理
在创建脚本和 web 运用程序时,缺点处理是一个主要的部分。如果您的代码短缺缺点检测
编码,那么程序看上去很不专业,也为安全风险洞开了大门。
本教程先容了 PHP 中一些最为主要的缺点检测方法。
我们将为您讲解不同的缺点处理方法:
· 大略的 \公众die()\公众 语句
· 自定义缺点和缺点触发器
· 缺点报告
基本的缺点处理:利用 die() 函数
第一个例子展示了一个打开文本文件的大略脚本:
<?php
$file=fopen(\公众welcome.txt\"大众,\公众r\"大众);
?>
如果文件不存在,您会得到类似这样的缺点:
Warning: fopen(welcome.txt) [function.fopen]: failed to open stream:
No such file or directory in C:\webfolder\test.php on line 2
为了避免用户得到类似上面的缺点,我们在访问文件之前检测该文件是否存在:
<?php
if(!file_exists(\公众welcome.txt\"大众))
{
die(\"大众File not found\公众);
}
else
{
$file=fopen(\公众welcome.txt\公众,\公众r\公众);
}
?>
现在,如果文件不存在,您会得到类似这样的缺点:
File not found
比起之前的代码,上面的代码更有效,这是由于它采取了一个大略的缺点处理机制在缺点之
后终止了脚本。
不过,大略地终止脚本并不总是恰当的办法。让我们研究一下用于处理缺点的备选的 PHP
函数。
创建自定义缺点处理器
创建一个自定义的缺点处理器非常大略。我们很大略地创建了一个专用函数,可以在 PHP
中发生缺点时调用该函数。
该函数必须有能力处理至少两个参数 (error level 和 error message),但是可以接管最多五个
参数(可选的:file, line-number 以及 error context):
语法
error_function(error_level,error_message,
error_file,error_line,error_context)
参数描述
error_level
必需。为用户定义的缺点规定缺点报告级别。必须是一个值数。
拜会下面的表格:缺点报告级别。
error_message 必需。为用户定义的缺点规定缺点。
error_file 可选。规定缺点在个中发生的文件名。
error_line 可选。规定缺点发生的行号。
error_context 可选。规定一个数组,包含了当缺点发生时在用的每个变量以及它们的值。
缺点报告级别
这些缺点报告级别是缺点处理程序旨在处理的缺点的不同的类型:
值常量描述
2 E_WARNING 非致命的 run-time 缺点。不停息脚本实行。
8 E_NOTICE
Run-time 关照。
脚本创造可能有缺点发生,但也可能在脚本正常运行时发生。
256 E_USER_ERROR 致命的用户天生的缺点。这类似于程序员利用 PHP 函数
trigger_error() 设置的 E_ERROR。
512 E_USER_WARNING 非致命的用户天生的警告。这类似于程序员利用 PHP 函数
trigger_error() 设置的 E_WARNING。
1024 E_USER_NOTICE 用户天生的关照。这类似于程序员利用 PHP 函数
trigger_error() 设置的 E_NOTICE。
4096 E_RECOVERABLE_ER
ROR
可捕获的致命缺点。类似 E_ERROR,但可被用户定义的处
理程序捕获。(拜会 set_error_handler())
8191 E_ALL
所有缺点和警告,除级别 E_STRICT 以外。
(在 PHP 6.0,E_STRICT 是 E_ALL 的一部分)
现在,让我们创建一个处理缺点的函数:
function customError($errno, $errstr)
{
echo \"大众<b>Error:</b> [$errno] $errstr<br />\"大众;
echo \"大众Ending Script\公众;
die();
}
上面的代码是一个大略的缺点处理函数。当它被触发时,它会取得缺点级别和缺点。然
后它会输出错误级别和,并终止脚本。
现在,我们已经创建了一个缺点处理函数,我们须要确定在何时触发该函数。
Set Error Handler
PHP 的默认缺点处理程序是内建的缺点处理程序。我们打算把上面的函数改造为脚本运行期
间的默认缺点处理程序。
可以修正缺点处理程序,使其仅运用到某些缺点,这样脚本就可以不同的办法来处理不同的
缺点。不过,在本例中,我们打算针对所有缺点来利用我们的自定义缺点处理程序:
set_error_handler(\"大众customError\"大众);
由于我们希望我们的自定义函数来处理所有缺点,set_error_handler() 仅须要一个参数,可以
添加第二个参数来规定缺点级别。
实例
通过考试测验输出不存在的变量,来测试这个缺点处理程序:
<?php
//error handler function
function customError($errno, $errstr)
{
echo \"大众<b>Error:</b> [$errno] $errstr\"大众;
}
//set error handler
set_error_handler(\"大众customError\"大众);
//trigger error
echo($test);
?>
以上代码的输出该当类似这样:
Custom error: [8] Undefined variable: test
触发缺点
在脚本中用户输入数据的位置,当用户的输入无效时触发缺点的很有用的。在 PHP 中,这
个任务由 trigger_error() 完成。
例子
在本例中,如果 \"大众test\公众 变量大于 \"大众1\"大众,就会发生缺点:
<?php
$test=2;
if ($test>1)
{
trigger_error(\公众Value must be 1 or below\"大众);
}
?>
以上代码的输出该当类似这样:
Notice: Value must be 1 or below
in C:\webfolder\test.php on line 6
您可以在脚本中任何位置触发缺点,通过添加的第二个参数,您能够规定所触发的缺点级别。
可能的缺点类型:
· E_USER_ERROR - 致命的用户天生的 run-time 缺点。缺点无法规复。脚本实行被中
断。
· E_USER_WARNING - 非致命的用户天生的 run-time 警告。脚本实行不被中断。
· E_USER_NOTICE - 默认。用户天生的 run-time 关照。脚本创造了可能的缺点,也有
可能在脚本运行正常时发生。
例子
在本例中,如果 \"大众test\"大众 变量大于 \"大众1\"大众,则发生 E_USER_WARNING 缺点。如果发生了
E_USER_WARNING,我们将利用我们的自定义缺点处理程序并结束脚本:
<?php
//error handler function
function customError($errno, $errstr)
{
echo \"大众<b>Error:</b> [$errno] $errstr<br />\"大众;
echo \"大众Ending Script\"大众;
die();
}
//set error handler
set_error_handler(\公众customError\公众,E_USER_WARNING);
//trigger error
$test=2;
if ($test>1)
{
trigger_error(\"大众Value must be 1 or below\"大众,E_USER_WARNING);
}
?>
以上代码的输出该当类似这样:
Error: [512] Value must be 1 or below
Ending Script
现在,我们已经学习了如何创建自己的 error,以及如何惩罚它们,现在我们研究一下缺点
记录。
缺点记录
默认地,根据在 php.ini 中的 error_log 配置,PHP 向做事器的缺点记录系统或文件发送缺点
记录。通过利用 error_log() 函数,您可以向指定的文件或远程目的地发送缺点记录。
通过电子邮件向您自己发送缺点,是一种得到指定缺点的关照的好办法。
通过 E-Mail 发送缺点
不才面的例子中,如果特定的缺点发生,我们将发送带有缺点的电子邮件,并结束脚本:
<?php
//error handler function
function customError($errno, $errstr)
{
echo \公众<b>Error:</b> [$errno] $errstr<br />\"大众;
echo \公众Webmaster has been notified\"大众;
error_log(\"大众Error: [$errno] $errstr\"大众,1,
\"大众someone@example.com\"大众,\公众From: webmaster@example.com\"大众);
}
//set error handler
set_error_handler(\"大众customError\"大众,E_USER_WARNING);
//trigger error
$test=2;
if ($test>1)
{
trigger_error(\公众Value must be 1 or below\"大众,E_USER_WARNING);
}
?>
以上代码的输出该当类似这样:
Error: [512] Value must be 1 or below
Webmaster has been notified
吸收自以上代码的邮件类似这样:
Error: [512] Value must be 1 or below
这个方法不适宜所有的缺点。常规缺点应该通过利用默认的 PHP 记录系统在做事器上进行
记录。
PHP 非常处理
非常(Exception)用于在指定的缺点发生时改变脚本的正常流程。
什么是非常?
PHP 5 供应了一种新的面向工具的缺点处理方法。
非常处理用于在指定的缺点(非常)情形发生时改变脚本的正常流程。这种情形称为非常。
当非常被触发时,常日会发生:
· 当前代码状态被保存
· 代码实行被切换到预定义的非常处理器函数
· 根据情形,处理器大概会从保存的代码状态重新开始实行代码,终止脚本实行,或从
代码中其余的位置连续实行脚本
我们将展示不同的缺点处理方法:
· 非常的基本利用
· 创建自定义的非常处理器
· 多个非常
· 重新抛出非常
· 设置顶层非常处理器
非常的基本利用
当非常被抛出时,其后的代码不会连续实行,PHP 会考试测验查找匹配的 \公众catch\"大众 代码块。
如果非常没有被捕获,而且又没用利用 set_exception_handler() 作相应的处理的话,那么将
发生一个严重的缺点(致命缺点),并且输出 \"大众Uncaught Exception\"大众 (未捕获非常)的缺点
。
让我们考试测验抛出一个非常,同时不去捕获它:
<?php
//create function with an exception
function checkNum($number)
{
if($number>1)
{
throw new Exception(\公众Value must be 1 or below\"大众);
}
return true;
}
//trigger exception
checkNum(2);
?>
上面的代码会得到类似这样的一个缺点:
Fatal error: Uncaught exception 'Exception'
with message 'Value must be 1 or below' in C:\webfolder\test.php:6
Stack trace: #0 C:\webfolder\test.php(12):
checkNum(28) #1 {main} thrown in C:\webfolder\test.php on line 6
Try, throw 和 catch
要避免上面例子涌现的缺点,我们须要创建适当的代码来处理非常。
处理处理程序应该包括:
1. Try - 利用非常的函数该当位于 \"大众try\"大众 代码块内。如果没有触发非常,则代码将照常继
续实行。但是如果非常被触发,会抛出一个非常。
2. Throw - 这里规定如何触发非常。每一个 \公众throw\"大众 必须对应至少一个 \"大众catch\"大众
3. Catch - \"大众catch\公众 代码块会捕获非常,并创建一个包含非常信息的工具
让我们触发一个非常:
<?php
//创建可抛出一个非常的函数
function checkNum($number)
{
if($number>1)
{
throw new Exception(\"大众Value must be 1 or below\"大众);
}
return true;
}
//在 \"大众try\"大众 代码块中触发非常
try
{
checkNum(2);
//If the exception is thrown, this text will not be shown
echo 'If you see this, the number is 1 or below';
}
//捕获非常
catch(Exception $e)
{
echo 'Message: ' .$e->getMessage();
}
?>
上面代码将得到类似这样一个缺点:
Message: Value must be 1 or below
例子阐明:
上面的代码抛出了一个非常,并捕获了它:
1. 创建 checkNum() 函数。它检测数字是否大于 1。如果是,则抛出一个非常。
2. 在 \"大众try\"大众 代码块中调用 checkNum() 函数。
3. checkNum() 函数中的非常被抛出
4. \"大众catch\"大众 代码块吸收到该非常,并创建一个包含非常信息的工具 ($e)。
5. 通过从这个 exception 工具调用 $e->getMessage(),输出来自该非常的缺点
不过,为了遵照“每个 throw 必须对应一个 catch”的原则,可以设置一个顶层的非常处理器
来处理漏掉的缺点。
创建一个自定义的 Exception 类
创建自定义的非常处理程序非常大略。我们大略地创建了一个专门的类,当 PHP 中发生异
常时,可调用其函数。该类必须是 exception 类的一个扩展。
这个自定义的 exception 类继续了 PHP 的 exception 类的所有属性,您可向其添加自定义的
函数。
我们开始创建 exception 类:
<?php
class customException extends Exception
{
public function errorMessage()
{
//error message
$errorMsg = 'Error on line '.$this->getLine().' in '.$this->getFile()
.': <b>'.$this->getMessage().'</b> is not a valid E-Mail address';
return $errorMsg;
}
}
$email = \"大众someone@example...com\"大众;
try
{
//check if
if(filter_var($email, FILTER_VALIDATE_EMAIL) === FALSE)
{
//throw exception if email is not valid
throw new customException($email);
}
}
catch (customException $e)
{
//display custom message
echo $e->errorMessage();
}
?>
这个新的类是旧的 exception 类的副本,外加 errorMessage() 函数。正由于它是旧类的副本,
因此它从旧类继续了属性和方法,我们可以利用 exception 类的方法,比如 getLine() 、
getFile() 以及 getMessage()。
例子阐明:
上面的代码抛出了一个非常,并通过一个自定义的 exception 类来捕获它:
1. customException() 类是作为旧的 exception 类的一个扩展来创建的。这样它就继续了
旧类的所有属性和方法。
2. 创建 errorMessage() 函数。如果 e-mail 地址不合法,则该函数返回一条缺点
3. 把 $email 变量设置为不合法的 e-mail 地址字符串
4. 实行 \"大众try\"大众 代码块,由于 e-mail 地址不合法,因此抛出一个非常
5. \公众catch\公众 代码块捕获非常,并显示缺点
多个非常
可以为一段脚本利用多个非常,来检测多种情形。
可以利用多个 if..else 代码块,或一个 switch 代码块,或者嵌套多个非常。这些非常能够使
用不同的 exception 类,并返回不同的缺点:
<?php
class customException extends Exception
{
public function errorMessage()
{
//error message
$errorMsg = 'Error on line '.$this->getLine().' in '.$this->getFile()
.': <b>'.$this->getMessage().'</b> is not a valid E-Mail address';
return $errorMsg;
}}
$email = \"大众someone@example.com\"大众;
try
{
//check if
if(filter_var($email, FILTER_VALIDATE_EMAIL) === FALSE)
{
//throw exception if email is not valid
throw new customException($email);
}
//check for \公众example\公众 in mail address
if(strpos($email, \"大众example\公众) !== FALSE)
throw new Exception(\公众$email is an example e-mail\"大众);
}
}
catch (customException $e)
{
echo $e->errorMessage();
}
catch(Exception $e)
{
echo $e->getMessage();
}
?>
例子阐明:
上面的代码测试了两种条件,如何任何条件不成立,则抛出一个非常:
1. customException() 类是作为旧的 exception 类的一个扩展来创建的。这样它就继续了
旧类的所有属性和方法。
2. 创建 errorMessage() 函数。如果 e-mail 地址不合法,则该函数返回一个缺点。
3. 实行 \"大众try\"大众 代码块,在第一个条件下,不会抛出非常。
4. 由于 e-mail 含有字符串 \"大众example\公众,第二个条件会触发非常。
5. \"大众catch\"大众 代码块会捕获非常,并显示恰当的缺点
如果没有捕获 customException,牢牢捕获了 base exception,则在那里处理非常。
重新抛出非常
有时,当非常被抛出时,您大概希望以不同于标准的办法对它进行处理。可以在一个
\"大众catch\"大众 代码块中再次抛出非常。
脚本该当对用户隐蔽系统缺点。对程序员来说,系统缺点大概很主要,但是用户对它们并不
感兴趣。为了让用户更随意马虎利用,您可以再次抛出带有对用户比较友好的的非常:
<?php
class customException extends Exception
{
public function errorMessage()
{
//error message
$errorMsg = $this->getMessage().' is not a valid E-Mail address.';
return $errorMsg;
}
}
$email = \公众someone@example.com\"大众;
try
{
try
{
//check for \"大众example\公众 in mail address
if(strpos($email, \"大众example\公众) !== FALSE)
{
//throw exception if email is not valid
throw new Exception($email);
}
}
catch(Exception $e)
{
//re-throw exception
throw new customException($email);
}
}
catch (customException $e)
{
//display custom message
echo $e->errorMessage();
}
?>
例子阐明:
上面的代码检测在邮件地址中是否含有字符串 \"大众example\"大众。如果有,则再次抛出非常:
1. customException() 类是作为旧的 exception 类的一个扩展来创建的。这样它就继续了
旧类的所有属性和方法。
2. 创建 errorMessage() 函数。如果 e-mail 地址不合法,则该函数返回一个缺点。
3. 把 $email 变量设置为一个有效的邮件地址,但含有字符串 \"大众example\公众。
4. \公众try\"大众 代码块包含另一个 \公众try\"大众 代码块,这样就可以再次抛出非常。
5. 由于 e-mail 包含字符串 \"大众example\公众,因此触发非常。
6. \"大众catch\"大众 捕获到该非常,并重新抛出 \"大众customException\"大众。
7. 捕获到 \"大众customException\"大众,并显示一条缺点。
如果在其目前的 \"大众try\公众 代码块中非常没有被捕获,则它将在更高层级上查找 catch 代码块。
设置顶层非常处理器 (Top Level Exception Handler)
set_exception_handler() 函数可设置处理所有未捕获非常的用户定义函数。
<?php
function myException($exception)
{
echo \"大众<b>Exception:</b> \"大众 , $exception->getMessage();
}
set_exception_handler('myException');
throw new Exception('Uncaught Exception occurred');
?>
以上代码的输出该当类似这样:
Exception: Uncaught Exception occurred
在上面的代码中,不存在 \公众catch\公众 代码块,而是触发顶层的非常处理程序。该当利用此函数
来捕获所有未被捕获的非常。
非常的规则
· 须要进行非常处理的代码该当放入 try 代码块内,以便捕获潜在的非常。
· 每个 try 或 throw 代码块必须至少拥有一个对应的 catch 代码块。
· 利用多个 catch 代码块可以捕获不同种类的非常。
· 可以在 try 代码块内的 catch 代码块中再次抛出(re-thrown)非常。
简而言之:如果抛出了非常,就必须捕获它。