本问题已经有最佳答案,请猛点这里访问。
Possible Duplicate:
Why is require_once so bad to use?
当PHP包含文件时,我假定它将文件名存储在数组中。
然后,当包含另一个文件时,它将检查该数组以查看是否已包含它,对吗?
那么,这有什么大不了的呢? 为什么人们如此害怕这种阵列检查? 并不是说您要包含数百万个文件...
一直进行in_array检查。 我在几乎所有功能中都使用它们:)
我不确定性能是否相关,因为这两个功能的作用不同。您应该根据功能而不是性能来选择使用哪一个。
您说的很对,这只是微观上的优化,但是我不相信"人们是如此害怕这种阵列检查"
谁放弃投票?
没听说过您能指出它所说的地方吗?
您知道,人们往往会胡说八道。
如果将代码分布在多个文件中,则对于包含库代码的文件一致地使用require_once可能实际上会更有效,因此不必执行两次文件。
使用_once版本v.s需要额外的MICROSCOPIC开销。普通的require(),因为该数组检查。抱怨慢的人是在鸡尾酒餐巾设计阶段就进行微优化的人。
不是那个MICROSCOPIC。操作码缓存不能缓存require_once和include_once(或效率不高)。那实际上是巨大的。在生产模式下进行基准测试。
我不确定是谁在说这句话,但是我相信这是遍及任何语言的许多微观优化神话之一。
这是一篇对这些方法进行基准测试的文章:
http://arin.me/blog/php-require-vs-include-vs-require_once-vs-include_once-performance-test
您的里程可能会有所不同,但是我怀疑您通过避免使用x_once功能是否会获得明显的性能提升。使用适合情况的语言构造,您没有做错任何事情。 x_once可能表明您需要重新考虑项目的组织或考虑使用自动加载器,但这不是eval ...
+1只是为了邪恶的文字游戏
require_once()有两个问题,如果您忽略性能问题,第二个问题也很重要。如果您使用的是require_once(),则意味着您可能多次在同一文件中require。这本质上是错误或错误的设计。现在,对于Web而言,性能部分是优化的应用程序将无所作为。如果您了解提供静态HTML文件或缓存的内容比提供PHP文件的速度要快,那么您会理解为什么人们说使用require_once()会比较慢。
实际上,对于明智的计划应用程序,诸如require_once之类的功能是无用的。
对于慢-它可以忽略不计。
你是什么意思,他们没用? 例如,Zend框架如何避免使用require_once?
好吧,采埃孚只是不明智的计划应用。
+1,合理的计划是关键,今天让您-1我一次:)
请解释一下。 我认为您的发言太荒谬了。 那么,如何使用两个都需要第三个组件的组件? 如果它们都使用require,则会出现错误,并且默认情况下一次使用require时,如果选择不使用这些组件,则会产生不必要的开销。
对于类,您可以定义一个适当的自动加载器并合理地命名您的类文件,并在需要定义类时将它们一次加载。