如何在函数内部使用require_once

时间:2013-05-02 05:52:51

标签: php mysql

您好我想在函数内使用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>';
            }

    }

2 个答案:

答案 0 :(得分:1)

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

    包含函数内部代码的
  • 字面上包含代码。这意味着所有包含的代码都在函数范围内进行评估。 PHP声明所有函数全局,但变量和普通代码序列在本地绑定,因此在现在执行的函数之外不可见。

  • 由于您使用相对路径加载包含的文件,因此您只能在特定文件系统级别内执行您的功能。这限制了您的代码的使用方式......

虽然当包含的文件包含一些本地配置时,这可能实际上是您想要的,但您几乎肯定会偶然发现:

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

因此,要么全局包含您的配置,例如将其存储在某个变量中,然后您可以在函数内部引用该变量,或者使用require()include()来确保每个变量都包含在内。执行该功能。

答案 1 :(得分:0)

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

您可能想要研究的另一件事是找到绝对的pth,例如: /home/username/public_html/system/core.php可能是文件的位置。

所以你会使用这样的东西

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

这可以解决你遇到的任何问题。

在旁注中,您不应该将您的配置文件或脚本的任何状态所需的任何文件放在一个函数中,无论您是否使用它,都应始终调用它。据我所知,这是mysql连接文件,所以我总是先把它放在顶部。