# Présentation KarmaFW est un mini framework PHP qui gère le routing, les templates et les connexions aux bases SQL. ## Fonctionnalités - Routing Web - Templates PHP/HTML - Connexions SQL - Envoi d'emails (SMTP) - FileUpload web - Paiements: Paypal, Payplug, Stripe - Auth: GoogleAuthenticator, SmsAuthenticator - PDF: création de PDF (HTML to PDF) - SMS: Envoi de SMS (Free & SmsEnvoi.com) - Hooks PHP - Bitly: génération d'url minimifiées Bitly ## Configuration Les paramètres de configuration de l'application se déclarent dans le fichier ./config/config.php Le nom de l'application est à définir dans la variable APP_NAME. ``` define('APP_NAME', "Mon app PHP"); ``` ### Pré-requis Composer est nécessaire afin de gérer les autoload des classes PHP. ### [Routing](src/Routing/) Les routes se déclarent dans le fichier ./config/routes.php Chaque route est attribuée à la méthode d'un controller à renseigner. ### [Templates](src/Templates/) Le chemin d'accès aux fichiers de templates se fait dans la variable de config TPL_DIR. ``` define('TPL_DIR', APP_DIR . '/templates'); ``` ### [Database SQL](src/Database/Sql/) Les informations de connexions à MySQL se font dans la variable de config DB_DSN. ``` define('DB_DSN', 'mysql://user:password@localhost/db_name'); ``` ## Structure du projet web ``` config config.php routes.php public index.php .htaccess src Controllers MyAppController HomeController Models User helpers helpers_myapp.php templates homepage.tpl.php vendor karmasolutions/karmafw ``` # Nouveau projet ## 0) se positionner dans le dossier du projet ## 1) lancer `composer init` ## 2) modifier composer.json ``` # Ajouter ceci dans composer.json { "repositories": [ { "type": "path", "url": "/put/here/the/path/to/karmafw" } ], "require": { "karmasolutions/karmafw": "dev-master", "filp/whoops": "^2.2@dev" } } ``` ## 3) créer le dossier public et le fichier public/index.php et le remplir avec ceci : ``` setPsr4('MyApp\\', __DIR__ . '/../src'); // ERRORS HANDLER $whoops = new \Whoops\Run; $whoops->prependHandler(new \Whoops\Handler\PrettyPageHandler); $whoops->register(); // ROUTE require APP_DIR . '/config/routes.php'; \KarmaFW\App::registerHelpersDir(APP_DIR . '/src/helpers'); // APP BOOT \KarmaFW\App::boot(); // YOUR INIT CODE HERE \KarmaFW\WebApp::getDb()->execute("set names utf8"); // APP ROUTE \KarmaFW\App::route(); ``` ## 4) créer le dossier config ## 4a) créer le fichier config/config.php et le remplir avec ceci : ``` setName('home'); ``` ## 5) Homepage controller : src/Controllers/MyAppController.php ``` db = App::getDb(); if (! empty($this->user_id)) { $this->user = User::load($this->user_id); $this->template->assign('databases', $databases); } } } ``` ## 6) Homepage controller : src/Controllers/HomeController.php ``` template->assign('title', 'My APP'); $db = App::getDb(); $db->connect(); $rs = $db->execute('show databases'); $databases = $rs->fetchAll(); $this->template->assign('databases', $databases); $this->template->display('homepage.tpl.php'); } } ``` ## 7) Homepage template : templates/homepage.tpl.php ```
``` ## 8a) Layout : templates/layout.tpl.php ```
```