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