salut a tous voila j'ai fait le TP : Création des classes Table et tous ce passer bien mais j'ai mis la nouvelle variable ( App\App::getDb()) ca ma mi une erreur pk ??
lien du screen : http://i21.servimg.com/u/f21/13/68/78/96/captur13.png

merci par avance pour vos reponse :) :)

22 réponses


jbdfjojo
Auteur
Réponse acceptée

voila Lartak :) PS l'erreur survient lors de l'appel ( App\App::getDb() )

<?php

namespace App;

class App{

  private static $database;

  const DB_NAME = '****';
  const DB_USER = '****';
  const DB_PASS = '****';
  const DB_HOST = '****';

  public static function getDb(){

    if (self::$database === null) {
       self::$database = new Database(self::DB_NAME, self::DB_USER, self::DB_PASS, self::DB_HOST);
    }
    return self::$database;

  }

}

Bonjour.
Si tu nous montrait le code qui se situe à la ligne 20 de ton fichier Autoloader.php, ça nous aiderait à mieux comprendre.

Moi pour les appel de constance j'ai toujours fait nom_class:: soit
App::DB_NAME

Sinon ça peux venir du fait que la class Database n'est pas dans le namespace

En cas poste ton code sur github.

jbdfjojo
Auteur

la class database est bien dans le namespace App et j'ai fait un essai avec (App::DB_NAME) et toujours le meme probleme ,je suis perdu je trouve pas de solution :( :(

Je pense que c'est pas la class qui gerère l'erreur mais le code de l'autoload.
Tu utilises quoi comme autoload, un existant, un crée soi même.

jbdfjojo
Auteur

celui en suivant le tuto de grafikart

namespace App;
class Autoloader{

    static function register(){
    spl_autoload_register(array(__CLASS__, 'autoload'));  
    // array( nom de la constante class(__CLASS__), nom de la fonction('autoload'))
    }

static function autoload($class){

    $class = str_replace(__NAMESPACE__, '', $class);
    $class = str_replace('\\', '/', $class);
    require  __DIR__.'/'.$class.'.php';
}

}

As tu moyen de donnée tout ton code sources, il doit avoir un problème allieur

jbdfjojo
Auteur

oui si tu veux tien https://1fichier.com/?4wbjwpre71

Salut,

Est-ce que tu as vérifié la casse de tes dossiers, fichiers, noms de classes et namespaces ? Car ça vient souvent de là.

jbdfjojo
Auteur

oui j'ai verifier et quand t'en tu par casse de tes dossiers??

Beh par exemple un nom de dossier commençant par une Majuscule alors que le require commence par une minuscule.

jbdfjojo
Auteur

ha ok mais DIR le recupere dynamiquement je n'est pas a men soucier normalement nn ??

Normalement non, mais vérifies quand même. Sinon, as-tu regardé le tuto en ENTIER ? Car peut-être @Grafikart a aussi eu l'erreur et explique comment la résoudre (le bougre !) :)

jbdfjojo
Auteur

nn justement chez lui ca marche direct c ca que je ne comprend pas

C'est quel chapitre ?

Merci pour le code.

voila l'Erreur : dans public/index.php

require '../app/Autoloader.php';  --> require '../App/Autoloader.php';

Ton répertoire c'est App et non app

jbdfjojo
Auteur

nn ca te marche pas ps ca marche chez toi ??

Chez moi après ce correctif ça marche, ça me dit error connection BDD qui est normal vu que j'ai pas configurais la BDD

<?php

namespace App;

require '../App/Autoloader.php';

Autoloader::register(); // charge l'autoloader

voila le fichier index.php dand public/

jbdfjojo
Auteur

oui c fait mais c bon ca venez de l'autoloder merci a tous pour votre aide :) il retirer App avant :)

Passe ton sujet en résolu ;)