如何在类中包含变量脚本?未定义的变量


how to include script of variables in a class? undefined variable

有一个脚本,该脚本具有字符串变量,这些变量表示数据字段,就像它们在数据库中一样。 因为这个项目完全是一团糟,所以这是一个清理它的阶段,而不必在许多位置重写字段名称。

因此,一个脚本'DataKeys.php'会将变量设置为字段名称。

//results from query1
$keyField1  = 'field1';
$keyField2 = 'field2';

上面的这两个变量只是一个更长的列表的片段。

我想访问此文件并在格式化数据以对前端更友好时使用这些变量。 正在类中访问此脚本,但是在类中找不到脚本中定义的字段 $keyField1 。我确实在那里有实际的字符串,但我认为单个接入点是最好的,所以当我将来进行更改时,我不需要搜索整个项目。

class DataFormatter {
    //put your code here
    public function __construct() {
        $documentRoot = filter_input(INPUT_SERVER, "DOCUMENT_ROOT");
        include ($documentRoot . '/database/values/DataKeys.php');
    }
    public function cleanData($data){
        if (is_null($data) || empty($data)) 
        {
            return;
        }
        foreach($data as $row){
            $field1Value = $row[$keyField1];
            unset($row[$keyField1]);
        }
    }
}

我还尝试将包含移动到类定义之外。

$documentRoot = filter_input(INPUT_SERVER, "DOCUMENT_ROOT");
include ($documentRoot . '/database/values/DataKeys.php');

报告的错误是:

Undefined variable: keyField1

灵魂也许不是最佳方法,但我采用了包含语句并将其放置在函数中。上面的代码只是我试图实现的目标的演示,而不是我正在使用的实际代码。

2 个

变量在"include"之后可用。例如,您可以将 2 个值放在对象的属性中

include ...;
$this->keyField1 = $keyField1;
$this->keyField2 = $keyField2;

您必须将 DataKeys.php 分配给类成员。

class DataFormatter {
    private $keyField1;
    private $keyField2;
    public function __construct($filename) {
        include $filename;
        $this->keyField1 = $keyField1;
        $this->keyField2 = $keyField2;
    }
}
$dataFormatter = new DataFormatter(filter_input(INPUT_SERVER, 'DOCUMENT_ROOT') . '/database/values/DataKeys.php');