我有一个PHP脚本,可以注册大约20个函数。理想情况下,它会加载require_once
。我想让它成为这样,即使它不知何故它被多次加载,它也不会尝试重新注册函数。我可以在!function_exists
中包装每个声明,但我想知道是否有更快的方法。 (或者您认为对!function_exists
的20次调用可以忽略不计?)我尝试使用exit
,但这会导致错误。是否可以退出而不抛出错误?
if ( /* already loaded */ ) {
/* leave gracefully */
}
/* declare ~20 functions */
答案 0 :(得分:4)
if (!defined('ALREADY_LOADED')) {
define('ALREADY_LOADED', true);
// rest of your code goes here
}
这将检查是否定义了常量ALREADY_LOADED
,如果不定义,则定义常量并执行任何其他操作。
运行一次之后,将定义常量,并且不会再次运行。
我建议使用比ALREADY_LOADED
更具描述性的常量名称。
答案 1 :(得分:2)
我认为使用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);
=============================================== ============== 更具体的答案需要更多的数据。 也许你的应用程序,你可以重新排列以获得更合理的结构
答案 2 :(得分:1)
如果你作为一个作者不再需要它一次,(或者一直使用require_once()
)那么重新注册函数应该没有问题。
对于没有错误的退出,请尝试die()
。
答案 3 :(得分:1)
我会尽量不在第一步重新声明功能(这里需要不止一次)。 做20x function_exists()不需要任何费用,只需要一些时间来编写和包装;) 也许您可以尝试使用类/方法。
答案 4 :(得分:1)
function_exists
也不错。
您可以按以下方式编写php脚本文件。
/* file1.php */
if(!defined('FILE1')) {
define('FILE1', 1);
/////////////////////////
// PUT file contents here.
/////////////////////////
}// file.php finished.
现在,您可以根据需要随时添加此文件。什么都不会重新定义。