PHP避免重复申明函数的解决方案

王朝网络·php·作者佚名  2006-01-08
宽屏版  字体: |||超大  

PHP避免重复申明函数的解决方案

jincoo(来自RUTED.COM的爬虫)

我们知道,在PHP中不能使用相同的函数名定义函数两次,如果这样,程序执行的时候就会出错。

而我们会把一些常用的自定义函数提取出来,放到一个Include文件中,然后别的文件就可以通过Include或require来调用这些函数,下面是一个例子:

<?php

// File name test1.inc.php

function fun1()

{

// do any fun1

}

function fun2()

{

// do any fun2

}

?>

<?

// File name test2.inc.php

require("test1.inc.php");

function fun1()

{

// do any fun1

}

function fun3()

{

// do any fun3

}

?>

<?

// File name test.php

//可能需要包含其他的文件

require("test1.inc.php");

require("test2.inc.php");

// do any test

?>

在test1.inc.php和test2.inc.php中同时定义了fun1这个函数,我虽然知道这两个函数实现的功能完全相同,但是我并不确定,或者说我不想明确的知道,一个函数是不是在某个“包”(INCLUDE)中定义了,另外的一个问题是,我们不能包含一个包两次,但是我并不想在这里花过多的时间进行检查,上面的例子,执行test.php会产生很多错误。

在C语言中,提供了预定义功能可以解决这个问题:

#ifndef __fun1__

#define __fun1__

// do any thing

#endif

PHP并不提供这样的机制,但是我们可以利用PHP的灵活性,实现和C语言的预定一同样的功能,下面举例如下:

<?php

// File name test1.inc.php

if ( !isset(____fun1_def____) )

{

____fun1_def____ = true;

function fun1()

{

// do any fun1

}

}

if ( !isset(____fun2_def____) )

{

____fun2_def____ = true;

function fun2()

{

// do any fun2

}

}

?>

<?

// File name test2.inc.php

require("test1.inc.php");

if ( !isset(____fun1_def____) )

{

____fun1_def____ = true;

function fun1()

{

// do any fun1

}

}

if ( !isset(____fun3_def____) )

{

____fun3_def____ = true;

function fun3()

{

// do any fun3

}

}

?>

<?

// File name test.php

//可能需要包含其他的文件

require("test1.inc.php");

require("test2.inc.php");

// do any test

?>

现在,我们不再怕同时包含一个包多次或定义一个函数多次会出现的错误了。这样直接带给我们的好处是,维护我们的程序变得比较轻松了。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有