如何使用require_once内部函数


how to use require_once inside function

你好,我想在一个函数内使用require_once但不工作??实际上我的页面中有三个函数怎么做呢....它在外部工作,而不是内部功能??

请任何人????

下面是我的代码:
 <?php
    //**************************************
    //     Page load dropdown results     //
    //**************************************
    function getTierOne()
    {
        require_once('../config.php');
        $provincequery="SELECT provinces.ProvinceID, provinces.ProvinceName FROM provinces WHERE ProvinceID > 0";
$result=$coon->query($provincequery); // mysqli neeeds connection while running the query
          while($province = mysql_fetch_array($result)) 
            {
               echo '<option value="'.$province['ProvinceID'].'">'.$province['ProvinceName'].'</option>';
            }
    }

实际上,从技术角度来看,您可以在函数中使用require_once()。然而,这很可能是一个坏主意,而不是你真正想做的:

  • 包括函数内的代码实际上包括那里的代码。这意味着所有包含的代码都在函数范围内求值。PHP声明所有的函数都是全局的,但是变量和纯代码序列都是本地绑定的,所以在当前执行的函数之外是不可见的。

  • 由于使用了相对路径来加载包含的文件,因此只能在某个文件系统级别内执行函数。

当包含的文件包含一些本地配置时,这可能实际上是您想要的,您几乎肯定会绊倒:

  • require_once()只需要一次,这就是该函数的作用。这意味着:如果您输入函数getTierOne()不止一次,那么对于每次后续运行,require_once()简单地将不包含任何代码,因为它已经在第一次运行中包含了。所以你是否包含你的配置取决于!这是一个可怕的设计!

因此,要么全局包含您的配置,例如将其存储在一些变量中,然后您可以在函数中引用它,要么使用require()include()来确保配置确实包含在函数的每次执行中。

我首先不建议在函数中使用require_once或require,虽然是的,我可以使用这个,我个人遇到了问题,并通过使用include_once解决了这个问题,这似乎修复了错误。

另一件事你可能想看看,是找到绝对的p .例如,/home/username/public_html/system/core.php可能是文件所在的位置。

所以你可以这样写

include_once("/home/username/public_html/system/core.php"); 

这应该能解决你遇到的任何问题。

另外,你不应该把你的配置文件或任何在脚本的任何状态下需要的文件放在一个函数中,无论你是否使用它,它都应该被调用。据我所知,这是mysql连接文件,所以我总是把它放在最上面。