Bonjour à tous,

J'ai un soucis l'erreur suivante:

"Parse error: syntax error, unexpected T_OBJECT_OPERATOR in C:\wamp\www\SIA_website\Core\Dispatcheur.php on line 25"

d'après mes lecture le problème vients des fichier ".htaccess", j'ai vérifié er revérifié je ne voix pas l'erreur quelqu'un a une idée ?

les codes sources:

".htaccess" racine:
[code]RewriteEngine On
RewriteRule ^(.*) webroot/$1 [L][/code]

".htaccess" webroot:

[code]RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*) Webroot/index.php/$1 [L][/code]

"dispatcheur":
[code]<?php

class Dispatcheur{

    var $request;

    function __construct(){
        $this->request = new Request(); 
        Routeur::parse($this->request->url, $this->request);
        $controleur = $this->loadControleur();
        //var_dump('apres appel: ',$controleur);
        //$controleur->view($this->request->action); 
        //var_dump($controleur);

        //var_dump($this->request->action);
        //var_dump($this->request->params);
        //var_dump(array($controleur, $this->request->action), $this-request->params);
        //call_user_func_array(array($controleur, $this->request->action), $this-request->params);
        //var_dump(array($controleur, $this->request->action), $this-request->params);

        //call_user_func_array(array($controleur, $this->request->action),array());

        call_user_func_array(array($controleur, $this->request->action), $this-request->params);

    }

    function loadControleur(){
        $name = ucfirst($this->request->controleur).'PagesControleurs';
        //var_dump($name);
        $file = ROOT.DS.'Controleur'.DS.$name.'.php';
        //var_dump($file);
        //echo $file;
        require $file;
        //var_dump($this->request);
        //var_dump(new $name($this-request));
        //$controleur = new $name($this-request);

        //var_dump('le controleur: ',$controleur);
        //return $controleur;
        return new $name($this-request);

    }

}

?>[/code]

"request":
[code]<?php

class Request{

    public $url; //URL demandé par l'utilisateur

    function __construct(){
        //$this->url = $_SERVER['PATH_INFO'];

        $this->url = isset($_SERVER['PATH_INFO'])?$_SERVER['PATH_INFO']:'/';
        //$this->url = str_replace(BASE_URL."/", "", $_SERVER['REQUEST_URI']);
        //$this->url = str_replace(INIT."/", "", $_SERVER['REQUEST_URI']);
    }

}

?>[/code]

"routeur":
[code]<?php

class Routeur{

    /**
    * Permet de parser une URL
    * @param $url
    * @return array de paramètres
    **/

    static function parse($url, $request){
        //$url = trim($url,'/');
        $params = explode('/',$url);

        $request->controleur = $params[0];
        $request->action = isset($params[1]) ? $params[1] : 'index';
        //$request ->action = isset($params[1]) ? $params[1] : 'Vue';
        $request->params = array_slice($params,2);
        return true;

    }

}

?>[/code]

"pagescontrolleurs":
[code]<?php
class PagesControleurs extends Controleur{

    function view($nom){

        echo 'vous avez demandé la page: '.$nom;
        //echo 'vous voyer ? ';
    }

}

?>[/code]

Juste pour info:

dans le dispatcheur :

[code]class Dispatcheur{

    var $request;

    function __construct(){
        $this->request = new Request(); 
        Routeur::parse($this->request->url, $this->request);
        $controleur = $this->loadControleur();          

        var_dump($this->request->action);
        var_dump($this->request->params);

        //call_user_func_array(array($controleur, $this->request->action), $this-request->params);

    }
[/code]

me donne:

"string '' (length=0)

array
empty"

et le code toujours dans le dispatcheur:

[code]class Dispatcheur{

    var $request;

    function __construct(){
        $this->request = new Request(); 
        Routeur::parse($this->request->url, $this->request);
        $controleur = $this->loadControleur();

        $controleur->view($this->request->action);  

        //call_user_func_array(array($controleur, $this->request->action), $this-request->params);

    }[/code]

me donne en résultat: "vous avez demandé la page:"

Merci de m'aider !

1 réponse


Salut,
Même si c'est tard pour répondre voici la solution :

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*) index.php/$1 [L]