欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

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

程序员文章站 2022-05-31 10:49:06
...
解决方案 jincoo(来自RUTED.COM的爬虫)

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



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




// 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语言的预定一同样的功能,下面举例如下:




// 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

?>



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