在方法中使用 require_once
Posted
技术标签:
【中文标题】在方法中使用 require_once【英文标题】:Using require_once inside a method 【发布时间】:2012-03-21 10:19:10 【问题描述】:据我了解,使用require_once
之类的东西基本上会将代码从一个文件复制并粘贴到另一个文件中,就好像它最初在第一个文件中一样。
这意味着如果我要做这样的事情,那将是有效的
foo.php
<?php
require_once("bar.php");
?>
bar.php
<?php
print "Hello World!"
?>
运行php foo.php
只会输出"Hello World!"
现在我的问题是,如果我在方法中包含require_once
,那么包含的文件会在加载脚本时加载,还是仅在调用方法时加载?
如果仅在调用该方法时,在性能方面是否有任何好处。还是和我把所有代码都放在一个大文件里一样。
我主要是问,因为我创建了一个处理大量调用的API
文件,我不想简化文件。 (我知道我可以通过创建单独的类来做到这一点,但我认为这很高兴)
(对不起,如果已经问过这个问题,我不确定要搜索什么)
【问题讨论】:
【参考方案1】:1) 仅当方法被调用时。
2) 我想动态加载有一个无形的好处,因此 PHP 解释器在不使用时不必解析额外的代码。
【讨论】:
Re: 2. 这是内存与性能的问题(尤其是在使用操作码缓存时)。按需加载代码可以节省内存,但需要更多处理并且更难缓存。 谢谢,这就是我需要知道的。我以前没有想过缓存是如何工作的。谢谢。【参考方案2】:它只会包括方法被调用的时间,但是你看过autoloading吗?
【讨论】:
【参考方案3】:我通常使用 include('bar.php');我在使用数据库信息时使用它,我有一个名为 database.php 的文件,其中包含登录信息,当文件加载时它会立即调用它。我不需要调用该功能。它可能不是最有效和最有效的,但它对我有用。您也可以使用 include_once ... include 基本上可以执行您想要的操作,它会复制代码 essencially..
【讨论】:
【参考方案4】:正如其他人所提到的,是的,它包括即时。
但是,请注意变量定义(从方法中require()
ing 将只允许访问该方法范围内的局部变量)。
请记住,您还可以从包含的文件中返回值(即字符串),以及使用ob_start()
等进行缓冲区输出。
【讨论】:
以上是关于在方法中使用 require_once的主要内容,如果未能解决你的问题,请参考以下文章