{"id":19339595,"url":"https://github.com/dsferruzza/moteur","last_synced_at":"2025-10-26T21:17:19.559Z","repository":{"id":3885292,"uuid":"4972327","full_name":"dsferruzza/moteur","owner":"dsferruzza","description":"Mon framework PHP léger à moi","archived":false,"fork":false,"pushed_at":"2013-03-17T11:26:28.000Z","size":192,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-06-04T00:40:19.135Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dsferruzza.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2012-07-10T10:21:52.000Z","updated_at":"2014-06-11T19:41:57.000Z","dependencies_parsed_at":"2022-07-31T14:09:42.583Z","dependency_job_id":null,"html_url":"https://github.com/dsferruzza/moteur","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/dsferruzza/moteur","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dsferruzza%2Fmoteur","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dsferruzza%2Fmoteur/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dsferruzza%2Fmoteur/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dsferruzza%2Fmoteur/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dsferruzza","download_url":"https://codeload.github.com/dsferruzza/moteur/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dsferruzza%2Fmoteur/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":272077690,"owners_count":24869288,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-25T02:00:12.092Z","response_time":1107,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-10T03:23:06.391Z","updated_at":"2025-10-26T21:17:14.530Z","avatar_url":"https://github.com/dsferruzza.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Moteur\n\nMon framework léger personnel.\n\nDéveloppé par et pour moi, dans le but de gagner du temps sur la création de petits sites web.\n\n## Fonctionnalités\n\n* Organisation de l'espace travail (pseudo MVC)\n* Système simple de routage des URLs\n* Système de [layout](http://www.symfony-project.org/images/jobeet/1_4/04/layout.png)\n* URLs \"jolies\" (utilise la réécriture d'URL)\n* URLs dynamiques (ex : l'URL `/mapage/monparametre` va afficher la page `mapage` en lui passant le paramètre `monparametre` ; c'est à la page en question de définir les actions à faire en fonction du paramètre)\n* Compression automatique des fichiers CSS et JS\n* Possibilité de faire fonctionner plusieurs sites indépendants à partir du même noyau\n* Faible impact du framework sur les performances\n\n## Prérequis\n\n* Un serveur web (des fichiers .htaccess sont fournis avec le projet ; pas de configuration à faire donc pour Apache2)\n* PHP5+\n\n## Installation\n\n* Copier les fichiers dans un dossier accessible par le serveur web\n* Régler les paramètres dans le fichier `index.php`\n* Modifier le paramètre `RewriteBase` dans le fichier `.htaccess` (mettre la même valeur que pour le paramètre `WWW` dans `index.php`)\n* Ajouter le contenu !\n\n## Fonctionnement\n\nIl n'y a qu'un seul point d'entrée : le fichier `index.php`.\nCelui-ci appelle le moteur, qui réalisera les actions suivantes :\n\n### Détermination de la page demandée\n\nLe moteur récupère le paramètre (par défaut : `p`) passé dans l'URL et cherche une correspondance dans le dossier page.\n\nExemple : l'URL `/index.php?p=page` (ou `/page`) va chercher le fichier `pages/page.php`.\n\nSi la page ET l'action correspondante n'existent pas, la page d'erreur 404 est sélectionnée à la place de la page.\n\n### Exécution de l'action correspondante\n\nS'il existe un fichier dans le dossier `actions` pourtant le même nom que la page, celui-ci est exécuté.\n\n### Affichage du layout\n\nLe fichier `layout/layout.php` est exécuté.\n\nIl doit contenir la ligne suivante, qui sera remplacée par le contenu de la page :\n\n```php\n\u003c?php require RACINE.'/'.DOSSIER_VUES.'/'.$page.'.php'; ?\u003e\n```\n\n## Fonctionnement multi-site\n\nIl est possible de faire fonctionner plusieurs site distincts sur le même noyau !\n\nDans la configuration d'exemple, le dossier `site2` contient son propre point d'entrée, qui défini des paramètres de fonctionnement (dossiers des pages, des actions, ...) différents de ceux du site principal.\n\nOn peut donc propulser plusieurs site avec le même moteur !\n\n## API\n\nEn plus des paramètres documentés dans `index.php`, le moteur propose quelques méthodes et paramètres pouvant être utilisés depuis le layout, les actions et les pages.\n\n### Variables/constantes\n\n**$page**\n\nContient le nom de la page qui sera affichée. Peut être modifié dans un fichier action, ou utilisé dans une page qui a besoin de son propre nom, par exemple.\n\n\n**$params**\n\nContient les paramètres passés à la page dans le cas d'une URL dynamique.\n\nExemple : avec une seule page `mapage`, l'URL `/index.php?p=mapage/42` (ou `/mapage/42`) donnera `$page = 'mapage'` et `$params = '/42'`.\n\n\n**E404_page**\n\nLorsqu'on appelle une page inexistante, cette constante existe et contient le nom de la page demandée.\n\n\n**E404_referer**\n\nLorsqu'on appelle une page inexistante, cette constante existe et contient le nom de la page sur laquelle on était avant de déclencher l'erreur 404 (si elle existe).\n\n\n**NO_LAYOUT**\n\nSi cette constante est créée dans une action, le layout n'est pas affiché ; seule la page demandée l'est.\n\n### Méthodes\n\n**url($page, $get)**\n\nRenvoie l'adresse d'une page interne.\n\n`$page` (défaut : null) : nom de la page\n\n`$get` (défaut : null) : paramètres GET sans point d'interrogation initial (exemple : `param1=val1\u0026amp;param2=val2`)\n\n\n**css($css, $minify)**\n\n(Compresse)/Renvoie l'adresse d'un fichier CSS.\n\n`$css` : nom du fichier (avec extension)\n\n`$minify` (défaut : true) : indique s'il faut compresser le fichier CSS (true) ou pas (false) avant de retourner son adresse. Les fichiers compressés sont créés automatiquement dans un dossier dédié lorsque l'original est modifié.\n\nLa bibliothèque [CSSTidy](https://github.com/Cerdic/CSSTidy) est utilisée pour la compression.\n\n\n**js($js, $minify)**\n\n(Compresse)/Renvoie l'adresse d'un fichier JS.\n\n`$js` : nom du fichier (avec extension)\n\n`$minify` (défaut : true) : indique s'il faut compresser le fichier JS (true) ou pas (false) avant de retourner son adresse. Les fichiers compressés sont créés automatiquement dans un dossier dédié lorsque l'original est modifié. Il est conseillé de ne pas compresser les fichiers qui le sont déjà.\n\nLa bibliothèque [jsmin-php](https://github.com/jaydiablo/jsmin-php) est utilisée pour la compression.\n\n## Contribution\n\nJe suis ouvert à tout avis, question, suggestion !\n\n## Licence\n\nGNU LGPL v3 https://www.gnu.org/licenses/lgpl.html\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdsferruzza%2Fmoteur","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdsferruzza%2Fmoteur","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdsferruzza%2Fmoteur/lists"}