I do not know if I am using the term 'routing' correctly, but here is the situation:
I created an .htaccess file to 'process' (dunno if my term is right) the url of my application, like this :
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]
Now I have this : 
http://appname/controller/method/parameter
http://appname/$url[0]/$url[1]/$url[2]
What I did is:
setup a default controller, in case it is not specified in the url
setup a Controller wrapper
I did it like this
$target = new $url[0]()
$controller = new Controller($target)
The problem with that one is that I can't use the methods in the object I passed in the constructor of the Controller:
I resolved it like this : 
class Controller {
  protected $target;
  protected $view;
  public function __construct($target, $view) {
    $this->target = $target;
    $this->view = $view;
  }
  public function __call($method, $arguments) {
    if (method_exists($this->target, $method)) {
        return call_user_func_array(array($this->target, $method), $arguments);
    }
  }
}
This is working fine, the problem occurs in the index where I did the routing, here it is
if(isset($url[2])){
    if(method_exists($controller, $url[1])){
         $controller->$url[1]($url[2])
    }
} else {
    if(method_exists($controller, $url[1])){
         $controller->$url[1]()
    }
}
where $controller = new Controller($target)
The problem is that the method doesn't exist, although I can use it directly without checking if method exist, how can I resolve this?