Browse Source

dev 2020-09

Max F 5 years ago
parent
commit
9e6153d242
1 changed files with 144 additions and 13 deletions
  1. 144 13
      Readme.md

+ 144 - 13
Readme.md

@@ -1,4 +1,69 @@
 
+# Présentation
+
+KarmaFW est un mini framework PHP qui gère le routing, les templates et les connexions aux bases SQL.
+
+## 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
+
+Les routes se déclarent dans le fichier ./config/routes.php
+  
+Chaque route est attribuée à la méthode d'un controller à renseigner.
+
+
+### 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
+
+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
+templates
+	homepage.tpl.php
+vendor
+	karmasolutions/karmafw
+```
+
+
 # Nouveau projet
 
 
@@ -39,7 +104,7 @@ require APP_DIR . '/config/config.php';
 
 // AUTOLOAD
 $loader = require VENDOR_DIR . '/autoload.php';
-$loader->setPsr4('App\\', __DIR__ . '/../src');
+$loader->setPsr4('MyApp\\', __DIR__ . '/../src');
 
 
 // ERRORS HANDLER
@@ -54,8 +119,15 @@ require APP_DIR . '/config/routes.php';
 
 \KarmaFW\App::registerHelpersDir(APP_DIR . '/src/helpers');
 
-// APP BOOT & ROUTE
+// APP BOOT
 \KarmaFW\App::boot();
+
+
+// YOUR INIT CODE HERE
+\KarmaFW\WebApp::getDb()->execute("set names utf8");
+
+
+// APP ROUTE
 \KarmaFW\App::route();
 
 ```
@@ -81,41 +153,72 @@ define('APP_NAME', "MyAPP");
 ```
 <?php
 
-namespace App\config;
+namespace MyApp\config;
 
 use \KarmaFW\Routing\Router;
 
 
 // Homepage
-Router::get('/', ['App\\Controllers\\AppController', 'homepage'])->setName('home');
+Router::get('/', ['MyApp\\Controllers\\HomeController', 'homepage'])->setName('home');
 
 ```
 
-## 5) Homepage controller : src/Controllers/AppController.php
+## 5) Homepage controller : src/Controllers/MyAppController.php
 ```
 <?php
 
-namespace App\Controllers;
+namespace MyApp\Controllers;
 
 use \KarmaFW\App;
-use \KarmaFW\Routing\Controllers\WebController;
+use \KarmaFW\Routing\Controllers\WebAppController;
+use \MyApp\Models\User;
 
 
-class AppController extends WebController
+class MyAppController extends WebAppController
+{
+	protected $db;
+	protected $user;
+
+	public function __construct($request_uri=null, $request_method=null, $route=null)
+	{
+		parent::__construct($request_uri, $request_method, $route);
+
+		$this->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
+```
+<?php
+
+namespace MyApp\Controllers;
+
+use \KarmaFW\App;
+
+
+class HomeController extends MyAppController
 {
 
 	public function homepage()
 	{
+		$this->template->assign('title', 'My APP');
+
 		$db = App::getDb();
 		$db->connect();
 
 		$rs = $db->execute('show databases');
 		$databases = $rs->fetchAll();
+		$this->template->assign('databases', $databases);
 
-		$template = App::createTemplate();
-		$template->assign('title', 'My APP');
-		$template->assign('databases', $databases);
-		$template->display('homepage.tpl.php');
+		$this->template->display('homepage.tpl.php');
 	}
 	
 }
@@ -123,7 +226,7 @@ class AppController extends WebController
 ```
 
 
-## 6) Homepage template : templates/homepage.tpl.php
+## 7) Homepage template : templates/homepage.tpl.php
 ```
 <html>
 <head>
@@ -138,3 +241,31 @@ class AppController extends WebController
 </html>
 
 ```
+
+
+
+## 8a) Layout : templates/layout.tpl.php
+```
+<html>
+<head>
+	<title>{$title}</title>
+</head>
+<body>
+<h1>hello world</h1>
+
+{$child_content}
+
+</body>
+</html>
+
+```
+
+## 8b) Homepage template avec layout : templates/homepage2.tpl.php
+```
+{layout layout.tpl.php}
+
+<pre>
+<?php print_r($databases); ?>
+</pre>
+
+```