PHP脚本可以在exit()之前执行公共代码吗?

时间:2009-09-17 00:41:54

标签: php scripting webserver

如何在PHP脚本中完成以下内容?

 code{
      $result1 = task1() or break;
      $result2 = task2() or break;
 }

 common_code();
 exit();

3 个答案:

答案 0 :(得分:20)

从PHP帮助doco中,您可以指定在exit()之后但在脚本结束之前调用的函数。

请随时查看doco以获取更多信息http://us3.php.net/manual/en/function.register-shutdown-function.php

<?php
function shutdown()
{
    // This is our shutdown function, in 
    // here we can do any last operations
    // before the script is complete.

    echo 'Script executed with success', PHP_EOL;
}

register_shutdown_function('shutdown');
?>

答案 1 :(得分:6)

如果您使用OOP,那么您可以将要执行的代码放在您的类的析构函数中。

class example{
   function __destruct(){
      echo "Exiting";
   }
}

答案 2 :(得分:3)

您的示例可能过于简单,因为它可以轻松地重写如下:

if($result1 = task1()) {
    $result2 = task2();
}

common_code();
exit;

也许您正在尝试像这样构建流控制:

do {
    $result1 = task1() or break;
    $result2 = task2() or break;
    $result3 = task3() or break;
    $result4 = task4() or break;
    // etc
} while(false);
common_code();
exit;

您还可以使用switch()

switch(false) {
case $result1 = task1(): break;
case $result2 = task2(): break;
case $result3 = task3(): break;
case $result4 = task4(): break;
}

common_code();
exit;

或者在PHP 5.3中,您可以使用goto

if(!$result1 = task1()) goto common;
if(!$result2 = task2()) goto common;
if(!$result3 = task3()) goto common;
if(!$result4 = task4()) goto common;

common:
echo "common code\n";
exit;