Bonjour,

Voila je rencontre un petit problème avec mon code.
Mais tout d'abord, j'aimerai aussi vous posez une question sur la structure d'un site
Petit exemple en image
!(https://img4.hostingpics.net/pics/602050siteprocede.jpg)
Procédé A une architecture plusieur page php appélé par un header (location :)
Donc chaque fois insérer le header le menu le footer et pour chaque page son code.
ou le procédé B qui lui a juste une page index et dedans le corps change (profil etc)
Quel est le mieux comme procédé?

J'ai tester le procédé B donc changer le corps et je vérifie les url pour les pages autorisées pour gerer la sécurité et j'ai un
( ! ) Fatal error: Cannot redeclare app_autoload() (previously declared in C:\wamp64\www\site_chat3\inc\bootstrap.php:4) in C:\wamp64\www\site_chat3\inc\bootstrap.php on line 8
Call Stack
Time Memory Function Location
1 0.0002 247000 {main}( ) ...\index.php:0
2 0.0128 356040 include_once( 'C:\wamp64\www\site_chat3\profil.php' ) ...\index.php:39

<?php

                        // On définit le tableau contenant les pages autorisées
                        // ----------------------------------------------------
                        $pageOK = array('contact' => 'contact.php', 
                                  'accueil' => 'accueil.php',
                                  'profil' => 'profil.php',
                                  'amis' => 'amis.php',
                                  'jeux' => 'jeux.php',
                                  'pubs' => 'pubs.php',
                                  'forum' => 'forum.php');
                  // On teste que le paramètre d'url existe et qu'il est bien autorisé
                  // -----------------------------------------------------------------
                  if ( (isset($_GET['page'])) && (isset($pageOK[$_GET['page']])) ) 
                  {
                    include_once($pageOK[$_GET['page']]);   // Nous appelons le contenu central de la page
                  } else 
                  {
                    include_once('accueil.php');   // Page par défaut quant elle n'existe pas dans le tableau
                  }

                ?>

Le probleme arrive a la ligne

c'était un simple include que j'ai mis en include_once mais cela n'a pas réflé le problème

    include_once($pageOK[$_GET['page']]);   

J'ai un autoload dans mon fichier bootstrap.php

<?php
spl_autoload_register('app_autoload');

function app_autoload($class){

    require "class/$class.php";
}

Mon header (du moins le début)

<?php 
require_once 'inc/bootstrap.php';

$auth =App::getAuth();
$db = App::getDatabase();
$auth->connectFromCookie($db);

Ce que je fais

Décrivez ici votre code ou ce que vous cherchez à faire

Entourez votre code pour bien le mettre en forme

Ce que je veux

Décrivez ici ce que vous cherchez à obtenir

Ce que j'obtiens

Décrivez ici vos erreurs ou ce que vous obtenez à la place de ce que vous attendez :(

6 réponses


Defy
Réponse acceptée

ben si tu veut une architecture solide, le mvc est ton ami.

yanis-git
Réponse acceptée

Pour commencer gentillement, tu devrais te renseigner du coté des micro framework :

  • slim
  • silex
  • Zend expressive (dernier tuto posté :))
yanis-git
Réponse acceptée

Attention ! Mes recommandations ne sont pas des frameworks MVC, tu peux l'implémenter mais de base, tu es libre. Ce sont basiquement des routers et quelques utilitaires.
Note : un Router est le composant servant à la correspondance url -> code à executer

Le MVC te servira à structurer en "famille" ton code en fonction de son rôle. Tu seras sûrement perdu au début, mais rien de grave. Nous y sommes tous arrivé, avec de la perseverance tu y arriveras aussi.

Pourquoi je te propose les micro framework ? Car ça te permettra d'avoir un premier niveau de structure et surtout de solutionner des problèmes pour toi tel que le router justement, sujet qui semble être au coeur de ton souci.

Enfin, je te recommande vivement d'abandonner le concept de "require" un peu partout, et de structurer tes pages autours de tes "utilitaires". C'est une vielle pratique qu'on a tendance à adopter au début, mais qui te provoquera beaucoup de souci pour, au final, n'être utilisé nul part.

sty
Auteur

Mon erreur est réglé, changement de structure du site et les require_once 'inc/bootstrap.php'; qui se ballade sur les pages donc double appel de la function :) Je ne ferme pas le topic car j'aimerai votre avis sur ma question sur l'organisation du site.

sty
Auteur

oki merci, je vais aller look cela commencer par le mvc et voir les autres slim, silex and zen voir un peu se que cela raconte.
Mais au niveau du choix je mets tout mon code php dans l index et l autre je l importe et chaque page a son php propre a se qu'il a besoin pour faire fonctionner la page. Bon je vais regarder pour y voir un peu plus clair sur la meilleur méthode.

sty
Auteur

@yanis-git merci de ta réponse, oui comme tu dois le ressentir je suis de la vielle école, cela se ressent dans mon codage ou je suis passé par la création d'un site avec l index et block centrale qui changeait puis le php ma fais deriver et donc au final avoir la bonne structure architecturale d'un site, je pense est plus dure que le codage. Mais le mvc m'a l'air bien je suis tombé sur un tuto de grafikart
Tutoriel PHP - Développer un site : Jour 2, La structure PHP qui à l'air de fonctionné comme le MVC comme base.
Donc pour grandir mieux fut des fois revoir c'est bases :)
Mais merci à toi