Salve a tutti, ho cercato ovunque ma non trovo soluzione al problema, spero voi possiate aiutarmi!
Ho un metodo in una classe padre che usa i metodi delle classi figlie per settare le informazioni:
Codice PHP:
protected function _setInfo(array $info)
{
foreach($info as $key => $value)
{
$method = 'set' . $this->_normalizeInfoName($key);
if(method_exists($this, $method))
{
$this->$method($value);
}
}
return $this;
}
_normalizeInfoName($key) è semplicemente un metodo che trasforma il nome passato come parametro per poterlo utilizzare come metodo.
Ad esempio:
Codice PHP:
$info = array('email' => 'prova@email.com');
$metod sarà 'setEmail' e $value 'prova@email.com'.
Dovrebbe funzionare (la classe derivata la uso io stesso e vi assicuro che setEmail esiste... ), ma invece mi solleva un Internal Server Error (il codice credo sia 500).
Altre informazioni che vi potrebbero essere utili sono:
Utilizzo Zend Framework, con Zend_Application e tutto il resto.
Ho provato mille altri modi per fare la stessa cosa: con le parentesi graffe $this->{$method}($value); con call_user_func; con il reflectionMethod::invoke; mi da lo stesso errore in tutti i casi.
is_callable mi restituisce false con array($this, $method).
Se avete bisogno di altre informazioni chiedetemi.
Grazie in anticipo a tutti!