PHP'nin __call()
sihirli yöntemini kullanarak denilen yöntemleri olan bir sınıf yapmaya çalışıyorum. Bu sihirli yöntem daha sonra bu gibi başka bir nesne başlatılırken olacak:
public function __call($function, $arguments) {
/* Only allow function beginning with 'add' */
if ( ! preg_match('/^add/', $function) ) {
trigger_error('Call to undefined method ' . __CLASS__ . '::' . $function, E_USER_ERROR);
}
$class = 'NamodgField_' . substr($function, 3); /* Ex: $function = addTextField() => $class = NamodgField_TextField */
/* This doesn't work! Because $class is not an object yet */
call_user_func_array( array(new $class, '__construct'), $arguments);
}
Bu kod son satırı tamamen worng olduğunu! Ben sadece ne yapmak istediğinizi açıkça yapmaya çalışıyorum.
Her çocuğun sınıf gerekli argümanlar var define olabilir Böylece, yeni bir nesne, birbiri ardına başlatırken $arguments
geçmek mümkün olmak istiyorum.
I eval()
kullanarak bir çözüm düşündüm, ama ben gerçekten sevmiyorum.
Herhangi bir düşünce?