【问题标题】:how to use require_once inside function [duplicate]如何在函数内部使用require_once [重复]
【发布时间】:2013-04-26 05:20:35
【问题描述】:

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

    }

【问题讨论】:

  • 收到任何错误信息?
  • 你可能只是不执行查询。
  • beark,你真的需要那个吗:(
  • 什么重复的......
  • include_once 不能作为 require_once 工作

标签: php mysql


【解决方案1】:

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

  • 在函数中包含代码字面意思就是包含那里的代码。这意味着所有包含的代码都在函数范围内进行评估。 PHP 将所有函数声明为全局函数,但变量和纯代码序列绑定在本地,因此在当前执行的函数之外不可见。

  • 由于您使用相对路径来加载包含的文件,因此您只能从某个文件系统级别执行您的函数。这限制了您的代码的使用方式...

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

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

所以要么在全局范围内包含您的配置,例如将其存储在某个变量中,然后您可以在函数中引用该变量,或者您使用require()include() 来确保配置确实包含在函数的每次执行中.

【讨论】:

  • 抱歉如何将我的文件包含在全局配置中
  • 好吧,只需在脚本开头使用require_once(),如果它包含静态内容,则在函数范围之外。但是请注意,如果您只是包含您的配置,那么其中的任何语法错误都会完全破坏您的代码。对于动态内容,通常更安全地解释此类文件的内容,例如使用函数parse_ini_file()...
  • 我在代码开头使用了 require_once() 如何使用 parse_ini_file() 函数???抱歉我的愚蠢问题我是 php 新手
  • 好吧,您确实看过 php 文档?没有那个你不能编程 php:php.net/manual/function.parse-ini-file.php
  • 如何将这些值存储在该函数内的静态变量中?仅在需要时通过调用函数来读取 config.php 以节省资源不是一个有用的设计吗?
【解决方案2】:

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

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

所以你会使用这样的东西

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

这应该可以解决您遇到的任何问题。

附带说明,您永远不应该将您的配置文件或脚本任何状态所需的任何文件放在一个函数中,无论您是否使用它,都应该始终调用它。据我所知,它是 mysql 连接文件,所以我总是把它放在最前面。

【讨论】:

  • 两者:require_once("C:\xampp\htdocs\spdealers\Admin Panel\config.php");和 require_once(config.php);在 FUN 之外工作而不是在里面
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-12-12
  • 1970-01-01
  • 1970-01-01
  • 2017-08-07
  • 1970-01-01
  • 2011-11-21
相关资源
最近更新 更多