Coder Social home page Coder Social logo

mediashare / kzu Goto Github PK

View Code? Open in Web Editor NEW
0.0 2.0 0.0 6.74 MB

:rocket: Simply PHP Framework :rocket:

Home Page: https://mediashare.fr/post/kzu

License: GNU Affero General Public License v3.0

PHP 1.18% CSS 0.86% JavaScript 63.77% Shell 0.03% HTML 33.61% Twig 0.55%
framework php

kzu's Introduction

KZU

Le code

Un framework étant un outil de partage de code, il est dans le but de Kzu de rendre de manière simple et disponible des bouts de code utile à tout type de projet.

Kzu est un programme facilitant la création d'application web et console. Le principe de Kzu réside dans l'utilisation des traits et les fonctions statiques ainsi qu'une nouvelle façon de gérer les fichiers de configurations et de bases de données.

En effet, comparé aux Class utilisés dans la plus part des projets, les Traits résout le problème de duplication des méthodes, donc ils évitent des incoréhence dans l'organisation du code lors de l'utilisation de Class classique.

<?php
Trait Temperature {
	public $temperature;
    	public function getChaleur() {
    		if ($this->temperature < 5):
        		return "Froid";
	        elseif ($this->temperature > 5):
        		return "Chaud";
        	endif;
	}
}

Class Dessert { 
	public function getName() {
		return $this->name;
	}
}

Class Fraise extends Dessert { 
	use Temperature;
	public $name = "Fraise";
}
Class Chocolat extends Dessert { 
	use Temperature;
	public $name = "Chocolat";
}

$dessert = new Fraise();
$dessert->temperature = "4";
echo $dessert->getChaleur(); # Froid

$dessert = new Chocolat();
$dessert->temperature = "28";
echo $dessert->getChaleur(); # Chaud

Un Trait ne pouvant être instancié, ceux-ci sont alors optimisés grâce aux fonctions statiques le plus souvent possible afin d'avoir des appelles rapides des valeurs / méthodes demandés. Bien sûr, un trait peu utiliser un ou plusieurs autres traits.

La conception d'application en est simplifié par sa flexibilité. Cela étant dit, rien ne vous empèches après de construire vos Class, tout en utilisant les méthodes statiques des Traits de Kzu.

composer create-project kzu/kzu project_name

Configuration

Vous pouvez retrouver l'enssemble des configuration dans le dossier ./config, celles-ci sont automatiquement chargées lors de l'éxécution du code et accessible via le trait Kzu\Config. Les fichiers de configurations sont interprétées en yaml, il faudra donc respecter la synthaxe et les indentations.

echo "test_config: true" > ./config/test.yaml
<?php
use Kzu\Config;
$env = Config::get('test', 'test_config'); # return true

Administration

Kzu intègre un module d'administration via une interface graphique, facilitant la gestion de vos configurations et bases de données.

Composants

Les composants de Kzu peuvent être utilisés manière indépendant du framework dans n'importe quel projet.


Security

Le module de sécurité vous offres une technique de chiffrement et de déchiffrement de vos fichiers ou chaîne de caractères. Ce module est basé sur la librairie phpseclib.

composer require kzu/security
<?php
use Kzu\Security\Crypto;
$encrypted = Crypto::encrypt("Ceci est un test d'encryption", 'passphrase');
$decrypted = Crypto::decrypt($encrypted, 'passphrase');

Filesystem

Le filesystem reste à la base de toute application logiciel, c'est pourquoi il est au centre du projet Kzu. Que ça soit la lecture ou l'écriture de fichier, le module ce doit-être performant et sécurisé.

composer require kzu/filesystem
<?php
use Kzu\Filesystem\Filesystem;

Filesystem::mkdir($directory = './config');
$files = Filesystem::find($directory, $extensions = ['yaml', 'yml']);
$content = Filesystem::read($file = './config/test.yaml');
$write = Filesystem::write($file, $content = "config_test: true", $encrypted = false);
Filesystem::delete('./var/cache');

Normalizer

Le normalizer est le module dédié à la gestion des chaînes de caractères en ce qui concerne la conversion et leurs visibilités dans tout type de situation. Il s'occupera aussi bien de la slugification d'un ensemble de mots, comme de la formation d'un document yaml provenant d'un tableau de valeurs.

composer require kzu/normalizer

Text

<?php
use Kzu\Normalizer\Text;
$slugify = Text::slugify('Mon titre'); # return 'mon-titre'

Table

<?php
use Kzu\Normalizer\Table;
$array = ['user' => [
      'id' => 1, 
      'roles' => ['admin' => true, 'user' => true]
	]
];
$array_one_line = Table::arrayOneLine($array); # return ['user.id' => 1, 'user.roles.admin' => true, 'user.roles.user' => true];
$all_keys = Table::getAllKeys($array); # return ['user', 'id', 'roles'];

Yaml

<?php
use Kzu\Normalizer\Yaml;
$yaml = Yaml::dump(['title' => 'Ceci est un titre']); # return Yaml
$array = Yaml::parse($yaml); # return ['title' => 'Ceci est un titre'];
$yaml_file = Yaml::parseFile('./config/text.yaml'); # return Yaml

Database

Le module database s'occupe de tout ce qui est lecture, écriture et récherche dans un ensemble de données utilie à l'application. les données sont inscrites dans un document yaml pouvant être sécurisé via un chiffrement SHA-250 géré de manière natif.

composer require kzu/database
<?php
use Kzu\Database\Database;
use Kzu\Database\DatabaseQuery;

Database::create('database_name', $model = ['id', 'title', 'online'], $encrypted = true);
DatabaseQuery::insert('database_name',[
	0 => ['id' => 1, 'title' => 'test 1', 'online' => true],
	1 => ['id' => 2, 'title' => 'test 2', 'online' => false],
	2 => ['id' => 3, 'title' => 'test 3', 'online' => true]
]);

$tests = DatabaseQuery::findBy('database_name', ['online' => true]);
$test_1 = DatabaseQuery::findOneBy('database_name', ['id' => 1]);

Storage

Storage est dépendant des modules de base de données et de filesystem. Ce module propose aussi le composant de gestion des sessions PHP.

composer require kzu/storage
<?php
use Kzu\Storage\Session;

Session::set('username', 'MarquandT');
$username = Session::get('username'); # return 'MarquandT'

Http

Http fournie les outils nécessaires aux requêtes entrantes et réponses de vos applications.

composer require kzu/http

Resquest

Response

Web

Le composant web implémente toutes les librairies utiles à la création d'applications web (Http, Storage, Database, Normalizer, Filesystem, Security).

composer require kzu/web

Flash

En utilisant les sessions de PHP, Flash implémente une logique de messages temporaires, utile lors de la validation de formulaire par exemple.

<?php
use Kzu\Web\Flash;
Flash::add('success', 'Librairie bien prise en compte');
$flash = Flash::get('success'); # return [0 => 'Librairie bien prise en compte']

Route

Bien sûr, qu'est-ce que serait un site sans sa gestion de routes ?

<?php
use Kzu\Web\Route;
Route::$routes = [
	'user_edit' => [
    	'path' => '/user/edit/{user_id}',
        'controller' => 'App\Controller\User::edit'
	]
];
$current_route = Route::getRoute();
$generate_route_path = Route::getRoutePath('user_edit', ['user_id' => '15b75756c');

Twig

Pour finir nous avons le moteur de rendu ce propulsant avec Twig.

kzu's People

Contributors

mediashare avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.