IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

catchable fatal error que je ne comprends pas


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 141
    Points : 92
    Points
    92
    Par défaut catchable fatal error que je ne comprends pas
    Bonjour,

    j'ai créer une classe qui me renvoi l'erreur suivante :
    Catchable fatal error: Object of class ValidModule could not be converted to string in...
    Le but de ma classe (et plus précisement dans le constructeur) est de lui passer en paramètre un élément de l'url et de vérifier si cet élément est une page existant sur mon serveur.

    La méthode renvoie le nom d'une page dont je dois ensuite faire l'include.

    Voici la classe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    <?php
    class ValidModule {
     
    	private	$_module	=	'';
    	private	$_page	=	'';
     
    	/*
    	 * Vérification de la page passée en paramètre
    	 * Si cette page existe elle est renvoyée
    	 * sinon on retourne la page d'accueil définie dans la constante HOMEPAGE 
    	 */
    	public function __construct($page)
    	{
    		$pageReturn	=	'';
     
    		//vérifie la présence du caractère de séparation de la page
    		$posCarac	=	strpos($page, PAGE_SEPARATOR);
    		if($posCarac === FALSE)
    		{
    			//pas de caractère, on vérifie si un répertoire du nom de la page existe avec une page index à l'intérieur
    			$pageVerif	=	MODULE.$page.'/index.php';
    			if(file_exists($pageVerif))
    			{
    				$pageReturn	=	$pageVerif;
    				$this->_module	=	$page;
    				$this->_page	=	'index';
    			}
    			else
    			{
    				$pageReturn	=	HOMEPAGE;
    				$this->_module	=	'accueil';
    				$this->_page	=	'index';
    			}
    		}
    		else
    		{
    			$elementChemin	=	preg_split('/'.PAGE_SEPARATOR.'/', $page);
    			$nomModule		=	$elementChemin[0];
    			$nomPage		=	$elementChemin[1];
    			$pageVerif		=	MODULE.$nomModule.'/'.$nomPage.'.php';
    			if(file_exists($pageVerif))
    			{
    				$pageReturn	=	$pageVerif;
    				$this->_module	=	$nomModule;
    				$this->_page	=	$nomPage;
    			}
    			else
    			{
    				$pageReturn	=	HOMEPAGE;
    				$this->_module	=	'accueil';
    				$this->_page	=	'index';
    			}
    		}
     
    		return	$pageReturn;
    	}
    }
    ?>
    le plus surprenant c'est que si je fais un echo $pageReturn juste avant le return j'ai bien une valeur qui est affichée, et qui est correcte.
    Or si je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $validModule	=	new ValidModule($_GET['page']);
    require_once	$validModule;
    et bien j'ai l'erreur écrite plus haut, et je ne vois pas ce qui peut clocher.

    Peut-être est-ce évidemment mais moi ça ne me saute pas aux yeux.

    Merci d'avance pour votre aide

  2. #2
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 222
    Points
    20 222
    Par défaut
    Pour faire ce que tu veux faire tu dois surcharger __toString().

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public function __toString()
    {
    	return $this->pageReturn; // doit être déclaré comme attribut privé
    }
    un constructeur ne retourne qu'une chose , une instance de l'objet , rien d'autre. Donc ton return est pas pris en compte.

    Au passage ta logique n'a pas grand chose à faire dans le constructeur, elle devrait être déportée dans une méthode différente
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 141
    Points : 92
    Points
    92
    Par défaut
    arf quelle buse ...

    Le genre de chose que je ne fais jamais en plus !

    Merci m'sieur

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Error #1063 que je ne comprends pas !
    Par arklane dans le forum Flash/Flex
    Réponses: 1
    Dernier message: 15/08/2014, 19h09
  2. [Débutant] Message d'erreur que je ne comprends pas
    Par Le Furet dans le forum Langage
    Réponses: 2
    Dernier message: 25/02/2006, 17h37
  3. [PostGreSQL] une erreur que je ne comprends pas
    Par flo78 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 02/02/2006, 10h18
  4. [thread][methodologie]Quelque chose que je ne comprends pas!
    Par norkius dans le forum Général Java
    Réponses: 5
    Dernier message: 16/03/2005, 14h01
  5. [Rave] un message que je ne comprends pas
    Par Clotilde dans le forum Rave
    Réponses: 2
    Dernier message: 30/09/2003, 21h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo