M'initier à l'orienté objet PHP
Bonjour. J'ai tenté de créer un listage de données sur le principe du MVC qui fonctionne bien.
Ce topic a pour but de m'initier à l'Orienté Objet. Franchement, j'ai fais beaucoup de lectures
mais je n'arrive pas à déterminer par où commencer pour appliquer le OO dans mon code.
J'aurais besoin des incides. Peut-être aussi me dire si je l'ai bon pour le MVC du au moins
à la base. J'apprends plus par un exemple. Disons, des indices.
member.php:
Code:
1 2 3 4 5
|
require(dirname(__FILE__).'/member-config.inc.php');
require(dirname(__FILE__).'/member-model.inc.php');
require(dirname(__FILE__).'/member-controller.inc.php');
require(dirname(__FILE__).'/member-view.inc.php'); |
member-config.inc.php:
Code:
1 2 3 4 5 6 7 8 9
|
define('DB_SERVEUR', 'localhost');
define('DB_LOGIN','root');
define('DB_PASSWORD','pass');
define('DB_NOM','cms');
define('DB_TABLE','cms_member');
define('DB_DSN','mysql:host='. DB_SERVEUR .';dbname='. DB_NOM);
define('MAX_PAR_PAGE', 1); |
member-controller.php:
Code:
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 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
|
<?php
//Contrôleur de l'application
// Objets de connexion et de manipulatin de la BDD
$oPDO = null;
$oPDOStatement = null;
// Tableau stockant les informations
$aInfos = array();
// Tableau stockant les items récupérés de la BDD
$aListe = array();
// Tableau stockant les erreurs générées
$aErreurs = array();
// Nombre de ithems enregistrés dans la BDD
$iNombre = 0;
// Numéro de la page courante
$iNumeroDePageCourante = 1;
// Offset à partir duquel on récupère les données dans la BDD
$iOffsetSelection = 0;
// Contrôle de la pagination
if(!empty($_GET['numeroPage'])
&& is_numeric($_GET['numeroPage'])
&& ($_GET['numeroPage']>1))
{
$iNumeroDePageCourante = intval($_GET['numeroPage']);
$iOffsetSelection = ($iNumeroDePageCourante - 1) * MAX_PAR_PAGE;
}
// Initialisation de la connexion avec la base de données
$oPDO = PDOConnect(DB_DSN, DB_LOGIN, DB_PASSWORD);
// Comptage du nombre en base de données
$oPDOStatement = $oPDO->query('SELECT COUNT(1) AS nombre FROM '. DB_TABLE);
$oPDOStatement->setFetchMode(PDO::FETCH_ASSOC);
$aInfos = $oPDOStatement->fetch();
$iNombre = intval($aInfos['nombre']);
// Récupération des items en fonction de la pagination
if (sizeof($iNombre)>0)
{
$oPDOStatement = $oPDO->prepare(
'SELECT identification,description,creation FROM '. DB_TABLE .' ORDER BY creation DESC LIMIT :offset, '. MAX_PAR_PAGE
);
$oPDOStatement->bindParam(':offset', $iOffsetSelection, PDO::PARAM_INT);
$oPDOStatement->execute();
// Récupération des résultats sélectionnés dans le tableau $aListe
$aListe = $oPDOStatement->fetchAll(PDO::FETCH_OBJ);
}
// Fermeture de la connexion SQL
$oPDOStatement = null;
$oPDO = null; |
member-layout.inc.php:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
<!DOCTYPE html>
<html>
<head>
<title><?php echo $title ?></title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="created" content="Thu, 04 Apr 2013 20: 51: 32 GMT">
<link href="member-style.css" rel="stylesheet" type="text/css">
</head>
<body>
<?php echo $content ?>
</body>
</html> |
member-model.inc.php:
Code:
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 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
|
<?php
/**
* Ce fichier contient toutes les fonctions
* utiles à l'application
**/
function PDOConnect($sDbDsn, $sDbLogin, $sDbPassword)
{
try
{
$oPDO = new PDO($sDbDsn, $sDbLogin, $sDbPassword);
}
catch (PDOException $e)
{
die('Une erreur interne est survenue');
}
$oPDO->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
return $oPDO;
}
function paginer($nb_results, $nb_results_p_page, $numero_page_courante, $nb_avant, $nb_apres)
{
// Initialisation de la variable a retourner
$resultat = '';
// nombre total de pages
$nb_pages = ceil($nb_results / $nb_results_p_page);
// nombre de pages avant
$avant = $numero_page_courante > ($nb_avant + 1) ? $nb_avant : $numero_page_courante - 1;
// nombre de pages apres
$apres = $numero_page_courante <= $nb_pages - $nb_apres ? $nb_apres : $nb_pages - $numero_page_courante;
// page precedente
if ($numero_page_courante > 1)
{
$resultat .= '<a class="linkPage" href="'. htmlspecialchars($_SERVER['PHP_SELF']) .'?numeroPage='. ($numero_page_courante - 1) .'" title="Page précédente '. ($numero_page_courante - 1) . '">«</a> ';
}
else
{
$resultat .= '<span class="iPage">«</span> ';
}
// affichage des numeros de page
for ($i = $numero_page_courante - $avant; $i <= $numero_page_courante + $apres; $i++)
{
// page courante
if ($i == $numero_page_courante)
{
$resultat .= ' <strong><div class="aPage"><span class="aPageTtl">PAGE <</span>' . $i . '<span class="aPageTtl">> DE '. $nb_pages .'</span></div></strong> ';
}
else
{
$resultat .= ' <a class="linkPage" href="'. htmlspecialchars($_SERVER['PHP_SELF'], ENT_QUOTES) .'?numeroPage='. $i .'" title="Consulter la page '. $i . '">' . $i . '</a> ';
}
}
// page suivante
if($numero_page_courante < $nb_pages)
{
$resultat .= ' <a class="linkPage" href="'. htmlspecialchars($_SERVER['PHP_SELF']) .'?numeroPage='. ($numero_page_courante + 1) .'" title="Consulter la page '. ($numero_page_courante + 1) . ' !">»</a> ';
}
else
{
$resultat .= ' <span class="iPage">»</span>';
}
// On retourne le resultat
return $resultat;
} |
member-view.inc.php:
Code:
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
|
<?php $title = "Coin des artistes" ?>
<?php ob_start(); ?>
<h1>Profils</h1>
<?php if ($iNombre > 0) : ?>
<ul>
<li><?php echo $iNombre; ?> ARTISTE<?php if ($iNombre > 1) : ?>S<?php endif; ?></li>
</ul>
<hr>
<?php foreach ($aListe as $oItem) : ?>
<div>
<?php echo htmlspecialchars($oItem->identification); ?> :
<?php echo htmlspecialchars($oItem->description); ?>
</div>
<hr>
<?php endforeach; ?>
<?php if ($iNombre > MAX_PAR_PAGE) : ?>
<?php echo paginer($iNombre, MAX_PAR_PAGE, $iNumeroDePageCourante, 0, 0); ?>
<?php endif; ?>
<?php else : ?>
<p>
Aucun artiste enregistré
</p>
<?php endif; ?>
<?php $content = ob_get_clean(); ?>
<?php require(dirname(__FILE__).'/member-layout.inc.php'); ?> |
J'ai vraiment besoin d'un coup de main. Je ne cherche pas à ce qu'on fasse mon code. Avec le temps, j'ai compris à séparer le PHP de l'affichage. Quoique je ne suis pas certain pour le contrôleur et le modèle. Mais, mon principal but est l'Orienté Objet de base. Merci d'avance. :?