我无法访问在 PHP 对象的函数或方法中动态创建的变量。这可能是作用域的问题,但我不知道为什么会发生这种情况,因为在 JavaScript 中,当您在函数内部声明 var 时,您仍然可以在该函数外部访问它。
我正在做的是这样的:
#code
...
$inputs = ['olympiad', 'test_type', 'year', 'level', 'country', 'test', 'answersheet'];
$Form = new Form;
$Form->addFields($inputs);
foreach (array_keys($Form->fields) as $key) {
${"$key"} = $Form->fields["$key"];
}
$olympiad->required(true)->type('select')->inValues($olyimpiadsArray)->label('Olmpíada')->errorMessage('some error message here');
$test_type->required(true)->type('select')->inValues($testTypeArray)->errorMessage('bla bla');
$level->required(true)->type('select')->inValues(['Nacional', 'Regional'])->label('Nível')->errorMessage('sample error message');
$year->required(true)->type('int')->range(1998, 2019)->label('Ano')->errorMessage('another error message');
$country->required(true)->type('string')->range(4, 64)->label('País')->errorMessage('these arent the real error messages');
$test->type('file')->label('Prova')->allowedExtensions(['pdf'])->errorMessage('bla bla');
$answersheet->type('file')->label('Gabarito')->allowedExtensions(['pdf'])->errorMessage('bla bla bla');
这是有效的,因为字段是对象并且它们作为引用传递,所以我可以通过内部创建的变量访问这些对象,foreach并且表单也将能够验证字段对象。
我foreach在许多网页中都使用相同的代码,所以很尴尬,因为我一次又一次地复制和粘贴代码。
预期成绩
我想要什么?我想做这个:
Class Form {
#code
...
public function create_vars_for_fields() {
foreach(array_keys($this->fields) as $key) {
${"$key"} = $this->fields["$key"];
}
return $this;
}
}
然后,在我的 PHP 网页上,我应该能够做到这一点:
require_once 'Form.php';
$inputs = ['olympiad', 'test_type', 'year', 'level', 'country', 'test', 'answersheet'];
$Form = new Form;
$Form->addFields($inputs)->create_vars_for_fields();
#code
...
如何通过在函数或方法中动态创建这些变量来访问它们?
狐的传说