【问题标题】:Using require_once inside a method在方法中使用 require_once
【发布时间】: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 文件,我不想简化文件。 (我知道我可以通过创建单独的类来做到这一点,但我认为这很高兴)

(对不起,如果已经问过这个问题,我不确定要搜索什么)

【问题讨论】:

    标签: php function require-once


    【解决方案1】:

    1) 仅当方法被调用时。

    2) 我想动态加载有一个无​​形的好处,因此 PHP 解释器在不使用时不必解析额外的代码。

    【讨论】:

    • Re: 2. 这是内存与性能的问题(尤其是在使用操作码缓存时)。按需加载代码可以节省内存,但需要更多处理并且更难缓存。
    • 谢谢,这就是我需要知道的。我以前没有想过缓存是如何工作的。谢谢。
    【解决方案2】:

    它只会包括方法被调用的时间,但是你看过autoloading吗?

    【讨论】:

      【解决方案3】:

      我通常使用 include('bar.php');我在使用数据库信息时使用它,我有一个名为 database.php 的文件,其中包含登录信息,当文件加载时它会立即调用它。我不需要调用该功能。它可能不是最有效和最有效的,但它对我有用。您也可以使用 include_once ... include 基本上可以执行您想要的操作,它会复制代码 essencially..

      【讨论】:

        【解决方案4】:

        正如其他人所提到的,是的,它包括即时。

        但是,请注意变量定义(从方法中require()ing 将只允许访问该方法范围内的局部变量)。

        请记住,您还可以从包含的文件中返回值(即字符串),以及使用ob_start() 等进行缓冲区输出。

        【讨论】:

          猜你喜欢
          • 2020-02-20
          • 2011-09-15
          • 2011-12-20
          • 1970-01-01
          • 2013-01-29
          • 1970-01-01
          • 2011-03-24
          • 2019-06-06
          • 2012-05-02
          相关资源
          最近更新 更多