App avec une seul entré, votre avis sur mon code

Par clementp, il y a 10 ans


Bonjour,

j’ais essayer de crée un site avec une seul entré, j’ai crée un pti bou de code mais j’aurais bien aimer avoir votre avis, est ce que des element peuvent poser probleme, des erreurs, etc...

merci a vous

RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php?page=$1 [QSA,L] if(isset($_GET['page']) && strlen($_GET['page']) <= 150){ $infosRoot = explode('/', $_GET['page']); $titre = false; $id = false; $numPage = false; $parmCount = 1; foreach ($infosRoot as $key => $value) { if(empty($infosRoot[$key])) { unset($infosRoot[$key]); } else{ $infosRoot[$key] = preg_replace('#[^0-9a-z_-]+#i', '', $value); // le prenier paramtre est la page a charger // elle peut etre accompagner d’un id // exemple : monsite.fr/users-6 (affiche le membre avec l’id 6) if($key == 0){ $infosRoot['page'] = explode('-', $infosRoot[0]); if(is_array($infosRoot['page']) AND is_numeric(end($infosRoot['page']))){ $infosRoot['id'] = (int) array_pop($infosRoot['page']); } $infosRoot['page'] = implode('-', $infosRoot['page']); } // le Deuxieme paramtre est le titre de la page // exemple : monsite.fr/users-6/Louis-Litt (titre de la page : Louis-Litt) if($key == 1){ $infosRoot['titre'] = $infosRoot[1]; } // Un paramtre pur gere la pagination // exemple : monsite.fr/news/page-4 if (preg_match("#page-([0-9]+)#", $value)) { $infosRoot['numPage'] = explode('-', $infosRoot[$key]); if(is_array($infosRoot['numPage']) AND is_numeric(end($infosRoot['numPage']))){ $infosRoot['numPage'] = (int) array_pop($infosRoot['numPage']); } } // Le dernier c’est pour recupere tout autre parametre eventuel // exemple : monsite.fr/news/un-param-autre (param1 = un-param-y, param2 = un-param-x,) elseif($key >= 2){ $infosRoot['param'.$parmCount] = $value; $parmCount ++; } unset($infosRoot[$key]); } } }else{ $infosRoot['page'] = 'index'; } // verification de $infosRoot['page'], le fichier exite t’il if(file_exists('pages/'.$infosRoot['page'].'.php')){ require_once('pages/'.$infosRoot['page'].'.php'); ob_start(); require_once('public/views/'.$infosRoot['page'].'.php'); $contentsTemplate = ob_get_clean(); require_once('public/template/defaut.php'); }else{ header('Location: '. ROOT .'/404'); }

15 réponses

Tango-charly, il y a 10 ans

Ahah, mais utilises bien === . === check le type et la valeur, donc castes bien tes valeurs (string) "true" != (boolena) true, je préfère le dire, si ça peut éviter des heures de debug ^ ^

clementp, il y a 10 ans

non personne ?

j'ai mal expliquer peut etre ?

tleb, il y a 10 ans

Salut,

Bon, c'est du code spaghetti, donc pas génial.

Utilise ===, meilleur perf (je dis pas qu'il faut l'utiliser tout le temps, mais dans la grande majorité des cas, === est plus adapté, doc).

Je regarderais plus en détails demain, quand je serais plus éveillé. :)

tleb, il y a 10 ans

Il faut noter qu'il existe aussi le !==qui va avec.

== peut servir, mais c'est uniquement dans des cas très rares (savoir si deux instances sont de la même classe, mais n'ont pas obligatoirement les mêmes propriétés, par exemple).

clementp, il y a 10 ans

Merci de vos reponses, je note pour les ===

Bon, c'est du code spaghetti, donc pas génial.

lol que veut dire cette phare ?
qu’est-ce qui est "mieux" ?

tleb, il y a 10 ans

Du code sphagetti, c'est de la logique qui n'est pas dans des classes.

Vallyan, il y a 10 ans

le code spaghetti s'oppose a la programmation orienté objet, dans laquelle tout est bien rangé dans des classes.

Tango-charly, il y a 10 ans

1 class = 1 objectif.
Le but est d'éviter d'avoir une super class coûteux suisse qui rend plusieurs services.

Un autre point d'amélioration, utilise les Exceptions throw new Execption, et log les erreurs, c'est super super important !

clementp, il y a 10 ans

ha oki c’etait prevu par la suite !

le petit truck chian c’est qu’avec cette logique je suis obliger de faire des url avec http://

tleb, il y a 10 ans

avec cette logique je suis obliger de faire des url avec http://

What ? Quel logique ? Tu utilisais quoi avant ?

Une seul chose à retenir quand on fait du OOP : SOLID.

clementp, il y a 10 ans

la logique des url /article/id-article/titre
m’oblige a faire des liens href=http://www.monsite.fr/article/id-article/titre

avant href=article.php?id=id-article

j’aurai bien aimer fair href= /article/id-article/titre

tleb, il y a 10 ans

<a href="/article/id-article/titre">link</a> t'envoie sur quel url ?

tleb, il y a 10 ans

Ça, c'est tout à fait normal, vu que / signifie la racine, donc tu demandes article/5/titre5 à partir de la racine, pas a partir du dossier de ton site.

arnich, il y a 10 ans

Pour eviter cela il faut que dans ta conf apache tu créés un virtualhost (ex : local.dev) qui pointera vers le dossier de ton site.
On doit pouvoir aussi trouver une solution dans la htaccess en modifiant BaseUrl (de memoire)