Felhasználói eszközök

Eszközök a webhelyen


oktatas:web:back-end_framework:leaf:minimalis

Különbségek

A kiválasztott változat és az aktuális verzió közötti különbségek a következők.

Összehasonlító nézet linkje

Előző változat mindkét oldalonElőző változat
oktatas:web:back-end_framework:leaf:minimalis [2024/09/16 23:20] – [Cors] adminoktatas:web:back-end_framework:leaf:minimalis [2025/08/01 10:45] (aktuális) – eltávolítva admin
Sor 1: Sor 1:
-[[oktatas:web:back-end_framework:leaf|< Leaf]] 
- 
-====== Leaf minimális ====== 
- 
-  * **Szerző:** Sallai András 
-  * Copyright (c) 2024, Sallai András 
-  * Licenc: [[https://creativecommons.org/licenses/by-sa/4.0/|CC BY-SA 4.0]] 
-  * Web: https://szit.hu 
- 
-===== Projekt készítése ===== 
- 
-  mkdir app01 
-  cd app01 
- 
-===== A leaf telepítése ===== 
- 
-Telepítjük az aktuális könyvtárba a Leaf-t a vendor könyvtárba. 
-  composer require leafs/leaf 
- 
-A parancs után létrejön egy **vendor** nevű könyvtár. A leaf ebbe könyvtárba kerül függőségként. 
- 
- 
- 
-===== Szoftver ===== 
- 
-Szükségünk van egy $app objektumra, amivel létrehozhatjuk az útválsztást: 
- 
-<code php index.php> 
-<?php 
- 
-require __DIR__ . '/vendor/autoload.php'; 
- 
-$app = new Leaf\App; 
- 
-$app->get('/msg', function() use($app) { 
-    $app->response()->json(['msg' => 'Hi!']); 
-}); 
- 
-$app->run(); 
- 
-</code> 
- 
-Az $app objektum helyett használhatjuk az app() függvényt: 
- 
-<code php index.php> 
-<?php 
- 
-require __DIR__ . '/vendor/autoload.php'; 
- 
- 
-app()->get('/msg', function() { 
-    response()->json(['msg' => 'Hi!']); 
-}); 
- 
-app()->run(); 
- 
-</code> 
- 
-===== Fejlesztői szerver ===== 
- 
-  php -S localhost:8000 -t . 
- 
-===== Tesztelés ===== 
- 
-Tesztelés HTTPie kliens segítségével: 
- 
-  http localhost:8000/msg 
- 
- 
- 
-===== Controller ===== 
- 
-Hozzunk létre, például a projekt gyökérkönyvtárában egy EmplyoeeController.php fájlt: 
- 
-<code php EmployeeController.php> 
-<?php 
- 
-class EmployeeController { 
-    public function index() { 
-        response()->json('műkszik'); 
-    } 
-} 
-</code> 
- 
-<code php index.php> 
-<?php 
-require __DIR__ . '/vendor/autoload.php'; 
- 
-$app = new Leaf\App; 
- 
-require "EmployeeController.php"; 
- 
-$app->get('/employees', 'EmployeeController@index'); 
- 
-$app->run(); 
-</code> 
- 
-===== Külön routing ===== 
- 
-<code php index.php> 
-<?php 
-require __DIR__ . '/vendor/autoload.php'; 
-require 'api.php'; 
-app()->run(); 
-</code> 
- 
-<code php api.php> 
-<?php 
- 
-require "EmployeeController.php"; 
- 
-$app = new Leaf\App; 
-$app->get('/employees', 'EmployeeController@index'); 
- 
-</code> 
- 
-<code php EmployeeController.php> 
-<?php 
- 
-class EmployeeController { 
-    public function index() { 
-        response()->json('műkszik'); 
-    } 
-} 
-</code> 
- 
- 
-===== Adatbázis ===== 
- 
-<code> 
-composer require leafs/db 
-</code> 
- 
-==== SQLite ==== 
- 
-<code php> 
-db()->connect([ 
-  'dbtype' => 'sqlite', 
-  'dbname' => 'db.sqlite', 
-]); 
-</code> 
- 
-==== MariaDB ==== 
- 
-<code php> 
-// syntax 
-db()->connect('hostname', 'dbnev', 'user', 'titok', 'mysql'); 
-</code> 
- 
-Lekérdezés: 
-<code php> 
-$emps = db()->query('SELECT * FROM employees')->all(); 
-</code> 
- 
- 
-<code mysql> 
-drop table if exists employees; 
-create table employees ( 
-    id int unsigned not null primary key auto_increment, 
-    name varchar(50), 
-    city varchar(50), 
-    salary double, 
-    created_at timestamp default current_timestamp, 
-    updated_at timestamp default current_timestamp on update current_timestamp 
-); 
-</code> 
- 
-===== CRUD műveletek ===== 
- 
-==== Kontroller ==== 
- 
-Célszer a kontrollerek számára készíteni egy app/controllers könyvtárat. A TodoController osztályban a konstruktorban állítsuk be az SQLite-t: 
- 
-<code php app/controllers/TodoController.php> 
-<?php 
- 
-class TodoController { 
-  public function __construct() { 
-    db()->connect([ 
-      'dbtype' => 'sqlite', 
-      'dbname' => 'db.sqlite' 
-    ]); 
-  } 
-  public function index() { 
-    $todos = db()->select('todos')->all(); 
-    response()->json($todos); 
-  } 
- 
-  public function create() { 
-    $res = db() 
-    ->insert('todos') 
-    ->params([request()->body()]) 
-    ->execute(); 
- 
-    $id = db()->lastInsertId(); 
-    $todo = db()->select('todos')->where('id', $id)->first(); 
-    response()->json($todo); 
-  } 
- 
-  public function update($id) { 
-    $res = db() 
-    ->update('todos') 
-    ->params(request()->body()) 
-    ->where('id', $id) 
-    ->execute(); 
-    $todo = db()->select('todos')->where('id', $id)->first(); 
-    response()->json($todo); 
-  } 
- 
-  public function delete($id) { 
-    $res = db() 
-    ->delete('todos') 
-    ->where('id', $id) 
-    ->execute(); 
-    response()->json($res); 
-  } 
-} 
- 
-</code> 
- 
-==== Útválasztás ==== 
- 
-<code php app/routes/api.php> 
-<?php 
- 
-require "app/controllers/TodoController.php"; 
- 
-app()->get('/api/todos', 'TodoController@index'); 
-app()->post('/api/todos', 'TodoController@create'); 
-app()->put('/api/todos/{id}', 'TodoController@update'); 
-app()->delete('/api/todos/{id}', 'TodoController@delete'); 
- 
-</code> 
- 
-===== Azonosítás ===== 
- 
-==== Függőség telepítése ==== 
- 
-  composer require leafs/auth 
- 
- 
-==== AuthController ==== 
- 
-<code php app/controllers/AuthController.php> 
-<?php 
- 
-class AuthController { 
-  public function __construct() { 
-    auth()->connect('', 'db.sqlite', '', '', 'sqlite'); 
-  } 
- 
-  public function login() { 
-    $data = auth()->login([ 
-      'username' => request()->get('username'), 
-      'password' => request()->get('password') 
-    ]); 
-    response()->json(['auth' => $data]); 
-  } 
-  public function register() { 
-    $data = auth()->register([ 
-      'username' => request()->get('username'), 
-      'password' => request()->get('password') 
-    ], ['username']); 
- 
-    if(!$data) { 
-      $data = auth()->errors(); 
-    } 
-    response()->json(['auth' => $data]); 
- 
-  } 
-} 
-</code> 
- 
- 
-==== Köztes szoftver ==== 
- 
-<code php app/middlewares/Auth.php> 
-<?php 
- 
-auth()->connect('', 'db.sqlite', '', '', 'sqlite'); 
- 
-app()->registerMiddleware('auth', function () { 
-  $id = auth()->id(); 
-  if (!$id) { 
-    response()->exit([ 
-      'status' => 'error', 
-      'message' => 'Not authorized' 
-      ], 401); 
-  } 
-}); 
-</code> 
- 
-==== Útvonalak védelme ==== 
- 
-<code php app/routes/api.php> 
-<?php 
- 
-require "app/controllers/TodoController.php"; 
-require "app/controllers/AuthController.php"; 
-require "app/middlewares/Auth.php"; 
- 
-app()->get('/api/todos', 'TodoController@index'); 
- 
-app()->post('/api/login', 'AuthController@login'); 
-app()->post('/api/register', 'AuthController@register'); 
- 
-app()->group('/', ['middleware' => 'auth', function () { 
-  app()->post('/api/todos', 'TodoController@create'); 
-  app()->put('/api/todos/{id}', 'TodoController@update'); 
-  app()->delete('/api/todos/{id}', 'TodoController@delete');     
-}]); 
- 
- 
-</code> 
- 
-===== Cors ===== 
- 
-  composer require leafs/cors 
- 
-vagy: 
- 
-  leaf install cors 
- 
-<code php index.php> 
-<?php 
- 
-require __DIR__ . '/vendor/autoload.php'; 
- 
-require 'app/routes/api.php'; 
- 
-app()->cors(); 
-app()->run(); 
-</code> 
- 
-Beállítás: 
- 
-<code php> 
-app()->cors([ 
-  'origin' => 'http://example.com', 
-  'optionsSuccessStatus' => 200 
-]); 
-</code> 
- 
- 
- 
  
oktatas/web/back-end_framework/leaf/minimalis.1726521642.txt.gz · Utolsó módosítás: 2024/09/16 23:20 szerkesztette: admin