私は既存のコードベースをより正しいアプローチに変換しようとしています。私たちの既存のコードベースは、PHPとJavascriptコードがいたるところに挿入されたHTMLで書かれています(順序付けられていない方法ではありませんが、そうであるべきではありません)。
したがって、現在のコードベースを変換してクラスを利用するようにしているので、プロパティとメソッドが先に進む方法です。しかし、私には問題があります。私は(理想的には)クラスメンバーの1人をインデックスではなく名前で参照したいと思っています。これをコードサンプルに入れましょう。
これはフォームクラスです:
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);
出来ますか?