我試圖將現有的代碼庫轉換爲更正確的方法。我們現有的代碼庫是用HTML和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] = new field($ type,$ name,$ hint,$ info);' – nullpotent
這是我用自己的血液和汗水學習的東西:**永遠不要寫一個表單生成器**。它永遠不會變好..還有,**你的抽象在各處泄漏**! –