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

时间:2015-06-11 13:24:38

标签: php class include

得到一个脚本,其中包含表示数据字段的字符串变量,就像它们在数据库中一样。因为这个项目是一个完整的混乱,这是一个清理它的阶段,而不必在许多地方重写字段名称。

所以一个脚本'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]);
        }
    }
}

我也试过在类定义之外移动include。

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

报告的错误是:

Undefined variable: keyField1

SOULTION 也许不是最佳方式,但我采用了include语句并将其放在函数中。上面的代码只是我试图实现的内容的演示,而不是我正在使用的实际代码。

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

您必须将 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');