Buon pomeriggio e buona domenica a tutti!
Sto sviluppando, momentaneamente solo per scopi didattici, un mini-framework mvc.
In particolare sto avendo dei problemi con il sistema generico di validazione dei form di cui l'ho dotato, o meglio, sto cercando di dotarlo.

Fondamentalmente ho una classe dispatcher che provvede all'invocazione dei metodi dei controllori il cui sorgente è il seguente

Codice PHP:
<?php

class Dispatcher {

    function 
__construct() {
        
$url explode('/'rtrim(isset($_GET['url']) ? $_GET['url'] : 'index''/'));
        
        echo 
'<pre>';
        
print_r($url);
        echo 
'</pre>';
        
        
$file 'controllers/' $url[0] . '.php';
        if (
file_exists($file)) {
            require 
$file;
        } else {
            require 
'controllers/index.php';
            
$controller = new Index("File $file does not exists"'errors');
            return 
false;
        }
        
        
$controller = new $url[0];
        
        echo 
'<pre>';
        
print_r(get_class_methods($controller));
        echo 
'</pre>';
        
        if (isset(
$url[2])) {
            
$controller->{$url[1]($url[2])};
        } else {
            if (isset(
$url[1])) {
                
$controller->{$url[1]()};
            }
        }
    }

}
Ho poi il controller seguente che mi valida un banale form

Codice PHP:
<?php

class Form extends Controller {

    function 
__construct() {
        
parent::__construct();
    }

    public function 
validate() {
        
parent::validate();
        
        
session_start();
        
$_SESSION['valid'] = array();
        
        if (isset(
$_POST['username'])) {
            if (
count($_POST['username']) > 5) {
                
$_SESSION['valid']['username'] = $_POST['username'];
            } else {
                
$this->getView()->setMessage('username must be longer than 5 characters''errors');
            }
        } else {
            
$this->getView()->setMessages('username is a required field''errors');
        }
        
$this->getView()->render('index/index');
    }
}
Nel momento in cui vado ad eseguire lo script, tutto procede secondo i piani a parte il messaggio finale!

codice:
Array
(
    [0] => form
    [1] => validate
)
Array
(
    [0] => __construct
    [1] => validate
    [2] => getView
)

Fatal error: Call to undefined function validate() in C:\xampp\htdocs\mvc\core\dispatcher.php on line 32
Il primo array contiene le info riguardo a controller e metodo, rispettivamente, da invocare, mentre, il secondo array nei medoti della classe form.

Come visibile dalla stampa dei metodi della class, il metodo esiste e non capisco la motivazione dell'errore: secondo voi perché non lo vede?

Grazie in anticipo