退出PHP脚本,没有错误


Exit PHP script w/o error

我有一个PHP脚本,它注册了大约20个函数。理想情况下,它会装载require_once。我想让它这样做,即使它被加载了不止一次,它也不会试图重新注册函数。我可以在!function_exists中包装每个声明,但我想知道是否有更快的方法。(或者你认为20次呼叫!function_exists可以忽略不计?)我尝试使用exit,但这会导致错误。是否有可能退出而不抛出错误?

if ( /* already loaded */ )  { 
    /* leave gracefully */
}  
/* declare ~20 functions */
if (!defined('ALREADY_LOADED')) {
    define('ALREADY_LOADED', true);
    // rest of your code goes here
}

检查是否定义了常量ALREADY_LOADED,如果没有,则定义该常量并执行其他操作。

运行一次后,该常量将被定义,并且不会再运行第二次。

我建议使用一个比ALREADY_LOADED更具描述性的常量名

我认为使用OOP是最实用的方法可以作为带有静态函数的类使用

class SimleClass{
    public static function func1($arg){...}
}

使用它SimpeClass: func1 (arg);

或sigleton

class SimleClass{
    protected static $_instance=null;
    private function __construct(){...}
    public static function getInstance(){
       if(is_null(self::$_instance)
            self::$_instance=new SimpleClass();
       return self::$_instance;
    }
    public  function func1($arg){...}
}

使用它SimpleClass:: getInstance () -> func1 arg ($);

和如何连接它自己思考可以使用include_once

,可以实现自动加载器类

function myClassLoader($className){
 include_once "/lib/$className.php";
}
spl_autoload_register(myClassLoader);

=============================================================因为更具体的答案需要更多的数据。也许在您的应用程序中,您可以重新排列以获得更合乎逻辑的结构

如果你作为一个作者不需要它不止一次,(或始终使用require_once())应该不会有重新注册函数的问题。

如果退出没有错误,请尝试die()

我尽量不要在第一步中重新声明函数(这里需要多次)。执行20倍的function_exists()不需要花费任何东西,只需要花费一些时间来编写和包装;)也许你可以尝试使用类/方法来代替。

function_exists还不错。

你可以用下面的方式编写你的php脚本文件:

/* file1.php */
if(!defined('FILE1')) {
define('FILE1', 1);
/////////////////////////
// PUT file contents here.
/////////////////////////
}// file.php finished.

现在你可以包含这个文件,只要你想在这里和那里。任何东西都不会再被重新定义。