11 Mars 2010 à 21:35:02 *
Bienvenue, Invité. Veuillez vous connecter ou vous inscrire.

Inscrivez-vous !


Connexion avec identifiant, mot de passe et durée de la session
Nouvelles: Le correcteur liquide a été inventé en 1951 par Bette Nesmith Graham.
 
   Accueil   Aide Rechercher Calendrier Identifiez-vous Inscrivez-vous  
Pages: [1]   Bas de page
  Imprimer  
Auteur Fil de discussion: [PHP]Une class de page  (Lu 98 fois)
0 Membres et 1 Invité sur ce fil de discussion.
nuki
Flan au vomi
*

Karma : 11
Hors ligne Hors ligne

Sexe: Homme
Messages: 57


Vive la jeune génération croate


Voir le profil
« le: 13 Décembre 2009 à 15:45:12 »

Voici donc une petite classe qui peut se réveler fort utile, elle permet de gerer des pseudos frames (index.php?page=Test) mais sous forme de rewriting dont la structure est lesite.com/module/id-page-titre.html

Code:
<?php
class Page
{
private $defaultPage;
private $modules;
private $path;

public function __construct($defaultPage$path)
{
//Page défault peu s'adapter en fonction d'un module
$this->defaultPage $default;
$this->path $path;
$this->modules = array
(
//Ensemble des modules
"Accueil" => array("titre" => "page d'Accueil""url" => $this->path,"/Default/index.php""dependance" => false"niveau" => 5),
"Test" => array("titre" => "page de Test""url" => $this->path,"/Test/index.php""dependance" => "Test-2""niveau" => 1),
"Test-2" => array("titre" => "page de Test n°2""url" => $this->path,"/Test2/index.php""dependance" => false"niveau" => 2)
);
$_SESSION['modules'] = serialize($this->modules);
}
public function parseUrl()
{
$modules unserialize($_SESSION['modules']);
if(isset($_GET['rewrite']))
{
//Si il y'a rewriting
$parseUrl $_SERVER['REQUEST_URI'];
$parsage explode("/"$parseUrl);
if(count($parsage) >= 3)
{
//Si la page n'est pas par défaut
$moduleCompl explode("-"$parsage[1]);
$id $moduleCompl[0];
if(count($moduleCompl) >= && is_int($moduleCompl[1]))
{
$pageNumero $moduleCompl[1];
$titre $moduleCompl[2];
}
else
{
$titre $moduleCompl[1];
$pageNumero false;
}
}
$titre str_replace(".html"""$titre);
$moduleCharge $parsage[0];
$tableauDuModule = array("module" => $moduleCharge"id" => $id"page" => $pageNumero"titre" => $titre);
return $tableauDuModule;
}
$titre false;
$moduleCharge = (isset($_GET['page'])) ? $_GET['page'] :  $this->defaultPage;
$id = (isset($_GET['id'])) ? $_GET['id'] :  false;
$tableauDuModule = array("module" => $moduleCharge"id" => $id"page" => $pageNumero"titre" => $titre);
return $tableauDuModule;
}

public function autorisation()
{
$moduleDatas parseUrl();
$modules getAllModules();
if(array_key_exists($moduleDatas['module'], $modules))
{
return true;
}
return false;
}

public function getFilDarianne()
{
$modules getAllModules();
$moduleDatas parseUrl();
$autorisation autorisation();
if($autorisation)
{
$fil $modules["Accueil"]["titre"];
for($i 1$i <= $modules["Accueil"]["niveau"])
{
foreach($modules as $cle => $valeur)
{
if($valeur["dependance"] == $moduleDatas["module"] && $valeur["niveau"] == $i$fil .= " - ",$valeur["titre"];
}
}
else
{
$fil $modules["Accueil"]["titre"];
}
echo $fil;
}

public function getAllModules()
{
return unserialize($_SESSION['modules']);
}

public function getTitle()
{
$moduleDatas parseUrl();
$autorisation autorisation();
if($autorisation)
{
return $moduleDatas["module"];
}
return $this->defaultPage;
}

public function getPage()
{
$moduleDatas parseUrl();
$autorisation autorisation();
$_SESSION['moduleTable'] = serialize($moduleDatas);
if($autorisation)
{
include $this->path,'/',$moduleDatas['module'],'/index.php';
}
else{ include $this->path,'/',$this->defaultPage,'/index.php'; }
}
}
?>

Avec un HTACCES
Code:
ErrorDocument 404 VOTRESITEINTERNET/index.php?rewrite=true

Cette class n'est pas totalement finie mais peut être un bon début

.:
.:::
ARRG
Victor Sjöström addict
*****

Karma : 35
Hors ligne Hors ligne

Sexe: Homme
Messages: 6084


PDG clandestin


Voir le profil
« Répondre #1 le: 13 Décembre 2009 à 19:46:51 »

Ca manque un peu de commentaires généraux (e.g. description de la classe, de son fonctinnement général et résumé de chaque méthode). Mais a première vue je peine à voir pourquoi tu sérialise et désérialise $modules tout le temps.

nuki
Flan au vomi
*

Karma : 11
Hors ligne Hors ligne

Sexe: Homme
Messages: 57


Vive la jeune génération croate


Voir le profil
« Répondre #2 le: 13 Décembre 2009 à 20:33:52 »

Parce que les tableaux modules ont des attributs utilisables partout et que certains infos se transmettent par propagation. C'est la seule méthode que j'ai trouvée pour la propagation de table.  8 )

.:
.:::
Pages: [1]   Haut de page
  Imprimer  
 
Aller à:  

Propulsé par MySQL Propulsé par PHP Powered by SMF 1.1.9 | SMF © 2006-2009, Simple Machines LLC XHTML 1.0 Transitionnel valide ! CSS valide !