31 Juillet 2010 à 10:17:11 *
Bienvenue, Invité. Veuillez vous connecter ou vous inscrire.

Inscrivez-vous !


Connexion avec identifiant, mot de passe et durée de la session
Nouvelles: Donc merci braiSN, si tu meurs je te coupe la tête et je t'empale sur ta bite avant de vider ma semence intellectuelle sur ton corps nu.
 
   Accueil   Aide Rechercher Calendrier Identifiez-vous Inscrivez-vous  
Pages: [1]   Bas de page
  Imprimer  
Auteur Fil de discussion: [PHP]Une class de page  (Lu 142 fois)
0 Membres et 1 Invité sur ce fil de discussion.
nuki
Flan au vomi
*

Karma : 10
Hors ligne Hors ligne

Sexe: Homme
Messages: 94


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 : 43
Hors ligne Hors ligne

Sexe: Homme
Messages: 6301


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.

Yo check this / I'm-a chill like the cubes of ice / When I mention Calcutta y'all feel the spice
 As I roll with a two-tone cellular phone / And get blown like inflation
nuki
Flan au vomi
*

Karma : 10
Hors ligne Hors ligne

Sexe: Homme
Messages: 94


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 !