Nel seguente codice chiamo una classe con call_user_func()
.controlla se la funzione esiste in classe prima di chiamare call_user_func()
if(file_exists('controller/' . $this->controller . '.controller.php')) {
require('controller/' . $this->controller . '.controller.php');
call_user_func(array($this->controller, $this->view));
} else {
echo 'error: controller not exists <br/>'. 'controller/' . $this->controller . '.controller.php';
}
Diciamo che il controller ha il seguente codice.
class test {
static function test_function() {
echo 'test';
}
}
Quando chiamo call_user_func('test', 'test_function')
non ci sono problemi. Ma quando chiamo una funzione che non esiste, non funziona. Ora voglio verificare prima se la funzione nel test di classe esiste, prima chiamo la funzione call_user_func
.
Esiste una funzione che verifica se in una classe esiste una funzione o esiste un altro modo in cui posso verificarlo?
[method_exists()] (http://php.net /manual/en/function.method-exists.php) –
Grazie a @MarkBaker! –
Non tutti i metodi esistenti sono richiamabili -> [is_callable] (http://php.net/manual/en/function.is-callable.php) – a4c8b