0

我正在尝试将我们现有的代码库转换为更正确的方法。我们现有的代码库是用 HTML 编写的,到处都插入了 PHP 和 Javascript 代码(不是以无序的方式,但不应该是这样)。

所以我正在转换我们当前的代码库以使用类,所以属性和方法是继续的方式。但我有一个问题。我(理想情况下)想通过他们的名字而不是索引来引用我的班级成员之一。让我把它放在一个代码示例中。

这是表单类:

class form {
    public $name;
    public $fields;

    {constructor goes here...}

    public function addField($type, $name, $hint = null, $info = null) {
        $this->fields[] = new field($type, $name, $hint, $info);
    }
}

这是字段类(表单类在创建新表单字段时调用):

class field {
    public $name;
    public $type;
    public $values;

    public function __construct($name) {
        $this->name = $name;
        $this->fields = null;
    }

    public function addValue($value, $minimum = null, $maximum = null, $step = 1) {
        $this->values[] = new value($value, $minimum, $maximum, $step);
    }
}

所以我的代码看起来像这样:

$form = new form("form1");
$form->addField(NUMBER, "number1");
$form->fields[0]->addValue(25, 1, 250, 1);

它确实有效,但最终不是我想要的。我想用指定的名称来调用每个字段,所以我可以这样写:

$form = new form("form1");
$form->addField(NUMBER, "number1");
$form->fields['number1']->addValue(25, 1, 250, 1);

甚至:

$form->addField(NUMBER, "number1")->addValue(25, 1, 250, 1);

可能吗?

4

1 回答 1

2

看起来这些字段只是表单对象中的一个数组。所以而不是

 $this->fields[] = new field($type, $name, $hint, $info);

你能做到这一点吗?

 $this->fields[$name] = new field($type, $name, $hint, $info);
于 2012-05-20T18:49:03.260 回答