【问题标题】:PHP class unable to access included variablesPHP 类无法访问包含的变量
【发布时间】:2023-04-06 04:25:01
【问题描述】:

这是一个 PHP 新手问题:

我想让我的班级访问包含文件中的数据库凭据:../config.inc

<?php
   $db_info['host']='localhost'; // and so forth 
   ...
 ?>

稍后,在我的类源文件中:

   <?php
      require_once('../config.inc'); // include the above file
      public class Foo {
         static function Host() {
            echo $db_info['host'];
         }
      }
   ?>

当尝试在其他代码中访问该类时,我收到一个错误,声称 $db_info 未定义。当我尝试在类范围内移动 require_once 时(在 Foo { 之后)我得到一个语法错误,所以显然不能在类中使用 require_once。编写需要访问包含数据的类静态方法时,最佳实践是什么?谢谢。

【问题讨论】:

标签: php variables include scope


【解决方案1】:

您的范围有问题。您包含的变量在您的班级之外可用,但在您的班级内部不可用。建议的方法应该是将变量传递给类的构造函数并将其存储在类的成员变量中。

但是由于您将该函数用作静态函数,因此您可以使用global,但这不是最佳实践。或者,您可以将文件包含在函数中。

  public class Foo {
     static function Host() {
      require_once('../config.inc'); // include the above fil  
      echo $db_info['host'];
     }
  }

【讨论】:

  • 由于某种原因,类中的 require 不起作用,但我没有尝试将其放入函数中。我也会试一试。有什么想法为什么只使用 global 不是“最佳实践”?
  • 使用global 导致debug 噩梦,因为当您有更多代码时,您将不知道变量的定义位置。
  • @nurakantech 你会选择 -1 所有对你不起作用的答案,可能是因为你的无能吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-10-31
  • 2011-12-03
  • 2011-09-01
  • 2011-07-23
  • 2014-06-04
  • 2015-05-25
  • 2016-03-27
相关资源
最近更新 更多