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 :

Comment déclarer correctement une classe ?


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Concepteur de systèmes mécaniques
    Inscrit en
    Mars 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Concepteur de systèmes mécaniques

    Informations forums :
    Inscription : Mars 2018
    Messages : 7
    Par défaut Comment déclarer correctement une classe ?
    Bonjour,

    Je suis en train de refaire le tuto POO que j'ai trouve sur le net, pour apprendre la POO
    Jusqu'à là j'avais compris ce que j'avais fait et poutquoi je l'ai fait.


    Sauf que j'ai ce problème qui sur survient : Fatal error: Cannot redeclare class App...

    Et je ne sais comment en venir à bout. pourtant la classe en question je ne la déclare qu'une seule fois.

    En cherchant sur le net, apparemment le problème viendrait du faite que j'appelle deux fois la même classe.

    Et pour être honnête avec vous je n'ai pas encore tout à fait compris le tuto, alors je le refais et après l'avoir fait je reviens dessus pour essayer de m'expliquer à moi-même pourquoi j'ai fait ceci, pourquoi j'ai fait cela.

    Le problème est apparu quand j'ai crée la fonction load()

    Voici le code de classe en question.

    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
    <?php
    class App{
     
    	public $title = "Mon sueper site";
    	private $db_instance;
    	private static $_instance;
     
    	public static function getInstance(){
    	if (is_null(self::$_instance)) {
    			self::$_instance = new App();
    		}
    		return self::$_instance;	
    	}
     
    	public function getTable($name){
    		$class_name = '\\App\\Table\\'.ucfirst($name).'Table';
    		return new $class_name($this->getDb());
    	}
     
     
    	public static function load(){
    		session_start();
    		require ROOT. '/app/Autoloader.php';
    		App\Autoloader::register();
     
    		require ROOT. '/Core/Autoloader.php';
    		Core\Autoloader::register();
     
    	}
     
    	public function getDb(){
     
    			$config = Config::getInstance();
     
    		if (is_null($this->db_instance)) {
    			$this->db_instance = new Database\MysqlDatabase($config->get('db_name'),$config->get('db_user'),$config->get('db_pass'),$config->get('db_host'));
    		}
     
    		return $this->db_instance;
    	}
    }

    Et voici le code la page qui appelle la classe.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php
    define('ROOT', dirname(__DIR__));
     
    require ROOT.'/app/App.php';
    App::load();
     
     
    $app = App\App::getInstance();
     
    $posts = $app->getTable('Posts');
    var_dump($posts->all());

  2. #2
    Membre du Club
    Homme Profil pro
    Concepteur de systèmes mécaniques
    Inscrit en
    Mars 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Concepteur de systèmes mécaniques

    Informations forums :
    Inscription : Mars 2018
    Messages : 7
    Par défaut
    C'est bon j'ai trouvé le problème

    C'est parce-que dans la page ou j'appelle la class app, j'y ai mis namespace app, alors que ma classe app ne se trouve dans aucun namespace.

  3. #3
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Salut,

    lis aussi ça : autoloading

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 31/08/2006, 14h54
  2. Réponses: 2
    Dernier message: 29/06/2006, 16h33
  3. Réponses: 4
    Dernier message: 06/06/2006, 16h18
  4. Comment Accéder au une classe d'un meme package
    Par CrazySeb dans le forum Langage
    Réponses: 2
    Dernier message: 28/04/2006, 22h43
  5. Réponses: 7
    Dernier message: 25/03/2005, 14h05

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