在foreach循环中包含PHP文件

8

我这样做可以吗?

foreach ($item as $val)
{
    include('external_script.php');
} 

当外部脚本大约有800行代码时,我希望将其保持独立以便组织。

天哪!


5
所以,我在维护一个有3万行代码的烂摊子,其中程序员经常这样做。如果你就是那个程序员,我能通过互联网打你吗? - Incognito
@Incognito,您是指单个文件中有30k行代码,还是总共有30k行代码? - Pacerier
6个回答

8

我觉得你最好使用一个函数来完成这个任务。

包含一个文件需要读取、解析和解释文件。但是,如果你有一个只需提供当前的$item的函数,它的代码只会被读取、解析和解释一次,你就不必像包含文件那样承担额外的开销。


1
我认为将其制作成函数的问题在于必须将变量传递到函数中,而LOC使用了80多个变量。 - atwellpub
@atwellpub:这些都是之前定义过的变量吗? - Gumbo
1
将所有这些变量封装在一个类中?这绝对听起来像是一些设计问题。 - ladenedge
1
@atwellpub 越是详细的信息越糟糕。为什么不一次性告诉我们整个故事,而是分批提供呢? - Your Common Sense
我需要学习如何在类中封装变量,然后函数似乎是最好的解决方案。在函数和include_once之间会有速度差异吗? - atwellpub

5

这会起作用,但在循环中调用外部文件会有磁盘I/O开销,除非你恰好运行了APC、XCache、eAccelerator。此外,你不能使用include,如果要重新加载同一文件,则应该使用include_once。


在主机ipage.com的某种情况下,执行此操作会导致500服务器错误。 - atwellpub
1
很多事情都可能导致500服务器错误。也许你应该开始一个新的问答。 - bcosca

2

你不会因为这样做而被神杀死,它甚至会起作用。但是使用函数更好。


1

你是否需要在每次迭代中包含外部脚本,这将决定你能否成功。

请注意,如果你包含的文件中包含函数,你会因为试图多次定义相同的函数而出现错误。


0

嗯,为什么?

如果是同一个文件,请将其包含一次 - 可以将代码放在函数中,然后根据需要调用该函数多少次。


-6

我认为你应该考虑使用eval()函数。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接