Bonjour,
Mettons que pour standardiser l'ossature des mes projets personnels sur des petits développements que je fais seule, j'aie envie d'adopter la philosophie MVC sans la lettre.
Que dites vous de cette architecture standard ?
Pour simplifier : les répertoires, les fichiers et quelques méthodes principales
- classes (partie parfaitement commune à tous les sites => reusable tel quel)
--- Sql_connection.php (connexion à toutes les bases)
--- Php_to_sql.php (tout le crud)
------ public function sql_read($pdo,$sql,$where=array()) (return l'array PHP)
------ public function sql_write($pdo,$sql,$where=array()) (return l'array PHP)
--- Php_to_html.php (production de toutes les entités HTML)
------ public function array_to_table($data, $id='', $class='', $caption='') (return l'entité HTML promise)
------ public function array_to_list($data, $list_type='ul', $id='', $class='') (return l'entité HTML promise)
------ public function menu_onglets_dynamiques($url, array $menu) (return l'entité HTML promise)
--- Php_only.php (ce qui peut etre utilisé partout ailleurs)
------ public function is_array_of_associative_arrays(array $array) (return true or false)
------ public function is_real_date ($date_type_sql) (return datetime or false)
- www (partie différente pour chaque site = le nom des pages donnera la logique métier, ici je vous mets un exemple de site pour un syndicat de co-propriétaires)
--- prestaire.php
--- coproprietaire.php
--- lot.php
--- conseil_syndical.php
--- batiment.php
--- activite.php
--- img
--- style.css
--- inc
------- menu_inc.php
--- js_lib
------ jquery
------ d3.js
--- php_lib
------ tcpdf
------ phpmailer
------ phpword
------ phpexcel
--- config.php
Contiendra ce genre de choses
Voilà, je pense n'avoir rien oublié d'essentiel ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 /*1) TRES IMPORTANT : EN PRODUCTION, PASSER CETTE CONSTANTE EN COMMENTAIRE*/ //si true PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION define('DEV',true); /*1) FIN************************************************************************************/ /*2) pour le template HTML*/ define('SITE_URL','http://localhost/site_test/www');//le DNS pointe direct sur le répertoire www define('SITE_PATH','C:/wamp64/www/mon_site');//la racine du site en amont de www define('CUR_TITLE','nom_de_mon_appli'); define('CUR_DESCRIPTION','nom_de_mon_appli : explication de l\'acronyme'); define('CUR_AUTHOR','authored by Sylvie VAUTHIER, software engineer'); define('CUR_ICO_PATH','./img/nom_de_mon_appli.png'); define('CUR_COPYRIGHT','Copyright © '.date('Y').' Sylvie VAUTHIER');
Exemple de page du site (batiment.php)
Je compte sur votre sagacité sans filtre pour me dire ce qui pourrait être vraiment amélioré !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 <?php require('./config.php'); spl_autoload_register(function ($class) { include '../classes/'.$class.'.php'; }); if( ! (defined('CUR_TITLE') && defined('CUR_DESCRIPTION') && defined('CUR_AUTHOR') && defined('CUR_ICO_PATH') && defined('CUR_COPYRIGHT'))){ echo 'ERREUR ! Configuration du site incomplète !'; exit; } $table=''; $pts=new Php_to_sql(defined('DEV')?'DEV':'PROD'); $scoop=$pts->local_connection(); $data=$pts->sql_read($scoop,'select * from batiment'); if(count($data)>0){ $pth=new Php_to_html(); $table=$pth->array_to_table($data,'batiment','tableau_par_defaut','Bâtiments'); } ?> <!DOCTYPE html> <html lang="fr"> <head> <meta charset="utf-8"> <title><?php echo strtolower(CUR_TITLE);?></title> <meta name="description" content="<?php echo CUR_DESCRIPTION;?>"> <meta name="author" content="<?php echo CUR_AUTHOR;?>"> <link rel="shortcut icon" href="<?php echo CUR_ICO_PATH;?>"> <link rel="stylesheet" href="style.css" media="screen"> </head> <body> <header> <p> <?php echo CUR_TITLE.'<br/>'; echo CUR_DESCRIPTION; ?> </p> <?php require('./inc/menu.inc.php'); ?> </header> <div> <?php echo $table; ?> </div> <footer> <div id="footer"> <p><?php echo CUR_COPYRIGHT; ?></p> </div> </footer> </body> </html> <?php $scoop=NULL; ?>
C'est déjà le fruit de quelques années d'expérience et de réflexion intense alors ne soyez pas trop sévère please...
Je peux encaisser toutes les critiques, mais constructives et bienveillantes...
Partager