Php 从其他文件中的类访问文件中的变量

Php 从其他文件中的类访问文件中的变量,php,class,variables,Php,Class,Variables,如果我有一个config.php文件,里面有变量,就像这样 config.php: $cnf['dbhost']=“0.0.0.0”; $cnf['dbuser']=“mysqluser”; $cnf['dbpass']=“mysqlpass”; 然后如何从另一个文件中的类访问这些变量,例如 inc/db.class.php: classdb(){ 函数连接(){ mysql_connect($cnf['dbhost']、$cnf['dbuser']、$cnf['dbpass']); } }

如果我有一个config.php文件,里面有变量,就像这样

config.php

$cnf['dbhost']=“0.0.0.0”;
$cnf['dbuser']=“mysqluser”;
$cnf['dbpass']=“mysqlpass”;
然后如何从另一个文件中的类访问这些变量,例如

inc/db.class.php

classdb(){
函数连接(){
mysql_connect($cnf['dbhost']、$cnf['dbuser']、$cnf['dbpass']);
}
}
$db=新的db();
因此,我可以在另一个文件中使用该类,例如

index.php


将配置文件包含在db脚本中,或包含在db脚本的开头。您还需要在要使用的函数中将
$cnf
指定为全局变量,否则无法访问全局变量:

include "../config.php";

class db() {

  function connect() {
      global $cnf;
      mysql_connect($cnf['dbhost'], $cnf['dbuser'], $cnf['dbpass']);
  }

}
$db = new db();
编辑: 在大型项目中,我更喜欢使用boot.php,其中包含所有php文件,因此我不需要在每个文件中包含我需要的所有内容。有了这个,我只需要将引导包含到index.php中,并处理所有的定义。它稍微慢一点,但确实很舒服。

将配置文件包含在db脚本中,或在db脚本的开头。您还需要在要使用的函数中将
$cnf
指定为全局变量,否则无法访问全局变量:

include "../config.php";

class db() {

  function connect() {
      global $cnf;
      mysql_connect($cnf['dbhost'], $cnf['dbuser'], $cnf['dbpass']);
  }

}
$db = new db();
编辑
在大型项目中,我更喜欢使用boot.php,其中包含所有php文件,因此我不需要在每个文件中包含我需要的所有内容。有了这个,我只需要将引导包含到index.php中,并处理所有的定义。它稍微慢一点,但非常舒服。

只需在
inc/db.class.php
中包含
config.php

编辑(回答评论中提出的问题)

您可以做的是创建一个
init.php
,如下所示

include('config.php');
include('db.class.php');
include('file.php');

因此,您的类将能够从
config.php
访问变量。现在,对于
index.php
,您只需要包含
init.php
,所有的类、配置等都将包含在内。

只需在
inc/db.class.php
中包含
config.php

编辑(回答评论中提出的问题)

您可以做的是创建一个
init.php
,如下所示

include('config.php');
include('db.class.php');
include('file.php');

因此,您的类将能够从
config.php
访问变量。现在,对于您的
index.php
,您只需要包括
init.php
,您的所有类、配置等都将包括在内。

谢谢,我知道这是可能的,但我有一个名为init.php的文件,它加载了很多类和函数——我希望我可以在其他包含之前包含config.php,并且他们可以在每个类/文件上不包含config.php而访问它。可能吗?如果我正确理解您的问题,init.php是一个包含大量类和函数的文件。因此,如果您在该文件中包含config.php,而不是在所有单独的类文件中,它应该仍然可以正常工作。不,init.php只是一个包含大量include('file.php')的文件。如果我可以在其余文件之前包含config.php,他们如何在不在每个脚本中包含config.php的情况下访问变量?是的,这就是我已经拥有的。看来我的课上只需要全球$cnf。谢谢谢谢,我知道这是可能的,但我有一个名为init.php的文件,加载了很多类和函数-我希望我可以在其他包含之前包含config.php,他们可以访问它,而不必在每个类/文件中包含config.php。可能吗?如果我正确理解您的问题,init.php是一个包含大量类和函数的文件。因此,如果您在该文件中包含config.php,而不是在所有单独的类文件中,它应该仍然可以正常工作。不,init.php只是一个包含大量include('file.php')的文件。如果我可以在其余文件之前包含config.php,他们如何在不在每个脚本中包含config.php的情况下访问变量?是的,这就是我已经拥有的。看来我的课上只需要全球$cnf。谢谢我刚看到你的编辑,这正是我想要做的。是否有任何方法可以将config.php包含在boot.php中,并且仍然从config.php中包含下面的访问变量,而不在每个脚本中包含它们?这是非常特定于解决方案的。但简单的解决方案是将每个类声明、数组(如配置、数据库请求等,甚至是init脚本)包含到引导php中,并将引导包含到每个独立页面中。如果每个页面都是从index.php中创建的(例如,像index.php?page=Home之类的调用),则只需将引导添加到索引中。如果你有多个输入页面(例如home.php),你需要将boot包含到每个页面中。我刚刚看到了你的编辑,这正是我想要做的。是否有任何方法可以将config.php包含在boot.php中,并且仍然从config.php中包含下面的访问变量,而不在每个脚本中包含它们?这是非常特定于解决方案的。但简单的解决方案是将每个类声明、数组(如配置、数据库请求等,甚至是init脚本)包含到引导php中,并将引导包含到每个独立页面中。如果每个页面都是从index.php中创建的(例如,像index.php?page=Home之类的调用),则只需将引导添加到索引中。如果您有多个条目页面(例如home.php),则需要将引导包含到每个条目页面中。