У меня есть большой список методов, которые я вызываю, исходя из значения свойства. Мне было интересно, есть ли более правильный метод делать то, что я делаю?Вызвать метод, основанный на значении свойства
Мой код прямо сейчас:
if ($qvalue->fid == 1) { $this->Archive1(); }
if ($qvalue->fid == 2) { $this->Archive2(); }
if ($qvalue->fid == 3) { $this->Archive3(); }
if ($qvalue->fid == 4) { $this->Archive4(); }
if ($qvalue->fid == 5) { $this->Archive5(); }
if ($qvalue->fid == 6) { $this->Archive6(); }
if ($qvalue->fid == 7) { $this->Archive7(); }
if ($qvalue->fid == 8) { $this->Archive8(); }
if ($qvalue->fid == 9) { $this->Archive9(); }
if ($qvalue->fid == 10) { $this->Archive10(); }
...
Могу ли я сделать что-то вроде этого:
$this->Archive($qvalue->fid)();
Я знаю, что это не будет работать, я просто не уверен, что если что-то лучше, возможно. Даже не уверен, что искать, чтобы увидеть похожие сообщения.
Это зависит от того, что в 'Archive9(), Archive10()' и так далее – codingbiz
Я просто интересно, если есть лучший способ вызова/запустить метод Archive9(). Не важно, что в нем. – ATLChris
Важно то, что с кучей функций, которые делают то же самое (только с * предположительно * разными данными), является сломанным дизайном. Это не значит, черт возьми. Если разница - это данные, то они должны быть одним методом, по той же причине, что '$ item1',' $ item2', '$ item3' ... фактически должны быть массивом. (Если вам не нравится передавать параметры каждой функции, вы можете сохранить их в массиве ассоциативных массивов, индексированных по значению '$ qvalue-> fid'.) Если функциональность отличается, это другая дело. (Но это также означает, что ваши * имена * нарушены.) – cHao