[RESOLU] [PHP] Problème tuto POO de vyk12

Eléphanteau du PHP | 45 Messages

26 juil. 2014, 11:46

Bonjour,

Je suis en train de suivre le tuto de vyk12 sur la programmation orientée objet et je me retrouve avec cette erreur sur le backend.php

erreur : "Fatal error: Uncaught exception 'RuntimeException' with message 'La vue spécifiée n'existe pas' in C:\wamp\www\monsupersite\Library\Page.class.php on line 23

( ! ) RuntimeException: La vue spécifiée n'existe pas in C:\wamp\www\monsupersite\Library\Page.class.php on line 23"

Voici ma classe: Page.class.php
<?php
namespace Library;
 
class Page extends ApplicationComponent
{
  protected $contentFile;
  protected $vars = array();
   
  public function addVar($var, $value)
  {
    if (!is_string($var) || is_numeric($var) || empty($var))
    {
      throw new \InvalidArgumentException('Le nom de la variable doit être une chaine de caractère non nulle');
    }
     
    $this->vars[$var] = $value;
  }
   
  public function getGeneratedPage()
  {
    if (!file_exists($this->contentFile))
    {
      throw new \RuntimeException('La vue spécifiée n\'existe pas');
      throw new \InvalidArgumentException('La vue spécifiée n\'existe pas');
    }
     
    $user = $this->app->user();
     
    extract($this->vars);
     
    ob_start();
      require $this->contentFile;
    $content = ob_get_clean();
     
    ob_start();
    require dirname(__FILE__).'/../Applications/'.$this->app->name().'/Templates/layout.php';
    return ob_get_clean();
  }
   
  public function setContentFile($contentFile)
  {
    if (!is_string($contentFile) || empty($contentFile))
    {
      throw new \InvalidArgumentException('La vue spécifiée est invalide');
    }
     
    $this->contentFile = $contentFile;
  }
}
Merci de m'éclairer

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

27 juil. 2014, 09:20

Salut,

Il te manque un try / catch http://fr2.php.net/manual/fr/language.exceptions.php

Il faut que tu choisisse l'exception qui va être levée parce que la, la seconde n'est pas utilisée la première mettant fin a l'exécution de la méthode.

@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 45 Messages

27 juil. 2014, 20:52

Salut,

L'erreur s'affichait car je n'avais pas écrit le bon "contentfile"
En effet celui-ci devait s'appeler index.php et non connexion.php comme je l'avais nommé

J'ai trouver la solution sur un autre forum en écrivant avant, l'expression :
if (!file_exists($this->contentFile))
l'expression :
var_dump( $this->contentFile );
die(__FILE__.':'.__LINE__);
Merci