Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
动态包含php变量_Php - Fatal编程技术网

动态包含php变量

动态包含php变量,php,Php,我正试图弄明白这一点,但一直没能弄明白。我正在尝试创建一个函数,在需要时将不同的配置文件包含到脚本中。我想将所有变量存储在数组中,然后使用一个函数来包含它们 范例 Config.php $array = array( 'var1' => 'something', 'var2' => 'something else' ); uses.php class uses{ public static function file($directory, $file){

我正试图弄明白这一点,但一直没能弄明白。我正在尝试创建一个函数,在需要时将不同的配置文件包含到脚本中。我想将所有变量存储在数组中,然后使用一个函数来包含它们

范例

Config.php

$array = array(
'var1' => 'something',
'var2' => 'something else'
);
uses.php

class uses{

      public static function file($directory, $file){

        if(is_dir($directory))
        {   
            if(is_file($directory.$file))
            {        
           include $directory.$file;

            }
            else
            {
             echo "File Not Found $directory$file";
            }
        }
        else
        {
           echo 'Dir Not Found';
        }
    }
}
包含index.php后,我将使用该文件

uses::file(Config.php);
print_r($array);
我知道如果在函数中包含一个文件,它们将无法超出函数的范围。这将由自动加载程序加载,因此我可以在脚本中的任何位置使用它

提前感谢,如果您需要更多信息,请告诉我。

请查看以下内容:

但简单地说,你可以这样做:

config.inc.php

$config['var1'] = 'Hello';
$config['var2'] = 'World';
[first_section]
one = 1
five = 5
animal = BIRD

[second_section]
path = "/usr/local/bin"
URL = "http://www.example.com/~username"
然后在php中:

include_once('config.inc.php');
$ini_array = parse_ini_file("sample.ini", true);
print_r($ini_array);
也可以将其用于INI样式的包含文件:

config.inc.php

$config['var1'] = 'Hello';
$config['var2'] = 'World';
[first_section]
one = 1
five = 5
animal = BIRD

[second_section]
path = "/usr/local/bin"
URL = "http://www.example.com/~username"
然后在php中:

include_once('config.inc.php');
$ini_array = parse_ini_file("sample.ini", true);
print_r($ini_array);

在我看来,你可能走错了方向。但是,首先,您所展示的代码存在问题。您的代码似乎需要两个参数,但您只传递了一个。这将使您的is_dir/is_文件调用始终失败,因为这两个条件永远不会同时为真,因此您的文件不包括在内

此外,您似乎没有将返回值分配给任何生命周期大于静态函数运行时生命周期的对象,因此即使包含该文件,您的配置变量最终也会被丢弃

要清理现有代码,您可以按照以下思路进行操作

<?php
class Config {
    static public $config;

    public static function load($path, $file){
         if (file_exists($path.$file) && is_file($path.$file)){
             self::$config = include ($path.file);
         }
    }
}

虽然这会使代码按照您尝试的方式运行,但这可能是个坏主意。您应该在其他类中使用依赖项注入,而不是在其他类中调用静态属性。这将在进行测试时为您提供一个接缝,还允许您的方法和类在构造函数和方法签名中记录执行给定任务所需的内容。有关DI是什么的更多信息,请参阅,以帮助理解为什么这样使用静态是个坏主意

你的问题是什么?托尼,这是你理解PHP的一个非常重要的概念,因此我建议你回到你的PHP笔记。话虽如此,变量并没有自动的文件作用域。它们通常位于定义它们的上下文级别的本地(第一次使用有时会隐式定义它们)。另一方面,include指令只是作为代码替换工具,允许您分解代码。与将所有结果代码包含在单个文件中相比,它对变量范围没有影响\函数“file”与数组的关系到底如何?