├── .htaccess ├── README.md ├── app ├── Controller.php └── Model.php ├── controllers ├── Articles.php └── Main.php ├── index.php ├── models └── Article.php └── views ├── articles ├── index.php └── lire.php ├── layout └── default.php └── main └── index.php /.htaccess: -------------------------------------------------------------------------------- 1 | RewriteEngine On 2 | RewriteRule ^([a-zA-Z0-9\-\_\/]*)$ index.php?p=$1 -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # mvc-php 2 | Introduction au MVC en PHP 3 | -------------------------------------------------------------------------------- /app/Controller.php: -------------------------------------------------------------------------------- 1 | Article 37 | $this->$model = new $model(); 38 | } 39 | } -------------------------------------------------------------------------------- /app/Model.php: -------------------------------------------------------------------------------- 1 | _connexion = null; 24 | 25 | // On essaie de se connecter à la base 26 | try{ 27 | $this->_connexion = new PDO("mysql:host=" . $this->host . ";dbname=" . $this->db_name, $this->username, $this->password); 28 | $this->_connexion->exec("set names utf8"); 29 | }catch(PDOException $exception){ 30 | echo "Erreur de connexion : " . $exception->getMessage(); 31 | } 32 | } 33 | 34 | /** 35 | * Méthode permettant d'obtenir un enregistrement de la table choisie en fonction d'un id 36 | * 37 | * @return void 38 | */ 39 | public function getOne(){ 40 | $sql = "SELECT * FROM ".$this->table." WHERE id=".$this->id; 41 | $query = $this->_connexion->prepare($sql); 42 | $query->execute(); 43 | return $query->fetch(); 44 | } 45 | 46 | /** 47 | * Méthode permettant d'obtenir tous les enregistrements de la table choisie 48 | * 49 | * @return void 50 | */ 51 | public function getAll(){ 52 | $sql = "SELECT * FROM ".$this->table; 53 | $query = $this->_connexion->prepare($sql); 54 | $query->execute(); 55 | return $query->fetchAll(); 56 | } 57 | } -------------------------------------------------------------------------------- /controllers/Articles.php: -------------------------------------------------------------------------------- 1 | loadModel('Article'); 12 | 13 | // On stocke la liste des articles dans $articles 14 | $articles = $this->Article->getAll(); 15 | 16 | // On envoie les données à la vue index 17 | $this->render('index', compact('articles')); 18 | } 19 | 20 | /** 21 | * Méthode permettant d'afficher un article à partir de son slug 22 | * 23 | * @param string $slug 24 | * @return void 25 | */ 26 | public function lire(string $slug){ 27 | // On instancie le modèle "Article" 28 | $this->loadModel('Article'); 29 | 30 | // On stocke l'article dans $article 31 | $article = $this->Article->findBySlug($slug); 32 | 33 | // On envoie les données à la vue lire 34 | $this->render('lire', compact('article')); 35 | } 36 | } -------------------------------------------------------------------------------- /controllers/Main.php: -------------------------------------------------------------------------------- 1 | render('index'); 7 | } 8 | 9 | } -------------------------------------------------------------------------------- /index.php: -------------------------------------------------------------------------------- 1 | $action(); 32 | }else{ 33 | // On envoie le code réponse 404 34 | http_response_code(404); 35 | echo "La page recherchée n'existe pas"; 36 | } 37 | }else{ 38 | // Ici aucun paramètre n'est défini 39 | // On appelle le contrôleur par défaut 40 | require_once(ROOT.'controllers/Main.php'); 41 | 42 | // On instancie le contrôleur 43 | $controller = new Main(); 44 | 45 | // On appelle la méthode index 46 | $controller->index(); 47 | } 48 | -------------------------------------------------------------------------------- /models/Article.php: -------------------------------------------------------------------------------- 1 | table = "articles"; 8 | 9 | // Nous ouvrons la connexion à la base de données 10 | $this->getConnection(); 11 | } 12 | 13 | /** 14 | * Retourne un article en fonction de son slug 15 | * 16 | * @param string $slug 17 | * @return void 18 | */ 19 | public function findBySlug(string $slug){ 20 | $sql = "SELECT * FROM ".$this->table." WHERE `slug`='".$slug."'"; 21 | $query = $this->_connexion->prepare($sql); 22 | $query->execute(); 23 | return $query->fetch(PDO::FETCH_ASSOC); 24 | } 25 | 26 | } -------------------------------------------------------------------------------- /views/articles/index.php: -------------------------------------------------------------------------------- 1 | 2 | 3 |

4 | 5 |

6 | 7 | -------------------------------------------------------------------------------- /views/articles/lire.php: -------------------------------------------------------------------------------- 1 |

2 |

3 | -------------------------------------------------------------------------------- /views/layout/default.php: -------------------------------------------------------------------------------- 1 |
2 |

Bienvenue sur mon blog

3 |
4 |
5 | 6 |
7 | -------------------------------------------------------------------------------- /views/main/index.php: -------------------------------------------------------------------------------- 1 |

Bienvenue sur la page d'accueil

--------------------------------------------------------------------------------