Я пытаюсь преобразовать существующую кодовую базу в более правильный подход. Наша существующая база кода написана в 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);
Возможно ли это?
Вместо того, чтобы спрашивать, возможно ли это, просто попробуйте. –
Конечно, это: '$ this-> fields [$ name] = новое поле ($ type, $ name, $ hint, $ info);' – nullpotent
Вот что я узнал с собственной кровью и потом: ** никогда не записывайте генератор формы **. Это никогда не получается хорошо .. также, ** ваша абстракция протекает повсюду ** !! –