我有一个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);
或sigletonclass 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.
现在你可以包含这个文件,只要你想在这里和那里。任何东西都不会再被重新定义。