2017 © Pedro PelĂĄez
 

library zephyrus

Simple PHP framework

image

zephyrus/zephyrus

Simple PHP framework

  • Tuesday, July 31, 2018
  • by dadajuice
  • Repository
  • 1 Watchers
  • 1 Stars
  • 2,214 Installations
  • PHP
  • 1 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 19 Versions
  • 0 % Grown

The README.md

, (*1)


Framework PHP élégant, simple, léger, plaisant et flexible, (*2)


Maintainability Test Coverage codecov Build Status StyleCI GitHub issues GitHub release, (*3)

Philosophie

Bienvenue dans le Framework Zephyrus! Ce framework est fondĂ© sur un modĂšle pĂ©dagogique en s'orientant sur une structure MVC simple, une approche de programmation flexible laissant place Ă  une extensibilitĂ© pour tous types de projet, une forte considĂ©ration pour la sĂ©curitĂ© applicative et une libertĂ© de dĂ©veloppement. Le tout offert depuis un noyeau orientĂ©-objet Ă©lĂ©gant favorisant l'Ă©criture d'un code de qualitĂ© propre et maintenable. DĂ©veloppement avec une philosophie de maintenir un plaisir Ă  programmer en n'Ă©tant pas rigoureusement strict sur une utilisation figĂ©e oĂč tout doit passer par une configuration et y ĂȘtre limitĂ©. Zephyrus s'insĂšre Ă  mi-chemin entre les plus petits frameworks et les monstres pour ainsi rĂ©pondre aux besoins de la plupart des projets., (*4)

Quelques caractéristiques générales

  • Une structure de projet simple et intuitive basĂ©e sur une architecture Model-View-Controller.
  • Traitement des vues avec le prĂ©processeur HTML Pug nativement intĂ©grĂ© ou simplement du PHP natif.
  • Approche pĂ©dagogique pour la conception Ă©lĂ©gante de classes et favorise une rĂ©trocompatibilitĂ© avec les fonctionnalitĂ©s natives de PHP comme l'utilisation des super-globales, de la session et autres.
  • Routeur de requĂȘtes simple et flexible basĂ© sur des contrĂŽleurs incluant une intĂ©gration facile de middlewares dans le flux d'une requĂȘte et d'un contrĂŽleur du projet. Facilite la segmentation des responsabilitĂ©s et la lecture d'une chaĂźne d'exĂ©cution.
  • Plusieurs mĂ©canismes de sĂ©curitĂ© intĂ©grĂ©s tel que les entĂȘtes CSP, les jetons CSRF, protection XSS, dĂ©tection d'intrusion basĂ© sur le projet (_PHPIDS_), mĂ©canisme d'authorisation et plus encore!
  • Philosophie d'accĂšs aux donnĂ©es depuis des courtiers manuellement dĂ©finis offrant un contĂŽle complet sur la construction des requĂȘtes SQL et, par consĂ©quent, une facilitĂ© de maintenance et d'optimisation.
  • Approche simple pour intĂ©grer des recherches, tris et pagination sur les requĂȘtes manuelles.
  • SystĂšme de validation de formulaires Ă©lĂ©gant et facilement extensible offrant une multitude de rĂšgles nativement sur les nombres, les chaĂźnes, les fichiers tĂ©lĂ©versĂ©s, les dates, etc.
  • Moteur unique simple et optimisĂ© pour la gestion des chaĂźnes de caractĂšres depuis une structure JSON, le tout facilement organisĂ© pour offrir une internationalisation.
  • Configuration d’un projet rapide et flexible permettant des paramĂštres personnalisĂ©es utilisables facilement.
  • Hautement extensibles facilement grĂące Ă  sa compatibilitĂ© avec les modules Composer.
  • Plusieurs utilitaires rapides : cryptographie, validations, systĂšme de fichiers, gestionnaire d'erreurs, transport de messages, etc.
  • Et plus encore !

Installation

Zephyrus nĂ©cessite PHP 8.2 ou plus. PrĂ©sentement, supporte uniquement Apache comme serveur web (pour un autre type de serveur, il suffirait d’adapter les fichiers .htaccess). Le gestionnaire de dĂ©pendance Composer est Ă©galement requis. La structure rĂ©sultante de l’installation contient plusieurs exemples pour faciliter les premiers pas., (*5)

Option 1 : Installation depuis composer (recommandé)

$ composer create-project zephyrus/framework <PROJECT_NAME>

Option 2 : Depuis une archive

$ mkdir <PROJECT_NAME>
$ cd <PROJECT_NAME>
$ wget https://github.com/dadajuice/zephyrus-framework/archive/vx.y.z.tar.gz
$ tar -xvf vx.y.z.tar.gz --strip 1
$ composer install

Option 3 : Depuis les sources (version de développement pour faire un PR par exemple)

$ git clone https://github.com/dadajuice/zephyrus-framework.git
$ composer install  

Intégration avec Apache

Une fois le projet installé, il suffit d'ajouter un entré dans vos vhost qui pointe vers le répertoire /public du projet., (*6)

<VirtualHost *:80>
        ServerName <HOST or IP>
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/<PROJECT_NAME>/public        
        <Directory /var/www/>
                AllowOverride All
                Require all granted
        </Directory>
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Utilisation

Exemple 1 : Obtenir une liste et un détail depuis la base de données (simple)

app/Models/Brokers/ClientBroker.php, (*7)

<?php namespace Models\Brokers;

class ClientBroker extends Broker
{
    public function findAll(): array
    {
        return $this->select("SELECT * FROM client");
    }

    public function findById($clientId): ?\stdClass
    {
        return $this->selectSingle("SELECT * FROM client WHERE client_id = ?", [$clientId]);
    }
}

app/Controllers/ExampleBroker.php, (*8)

<?php namespace Controllers;

use Models\Brokers\ClientBroker;use Zephyrus\Network\Router\Get;

class ExampleController extends Controller
{
    #[Get("/clients")]
    public function index()
    {
        $broker = new ClientBroker();       
        return $this->json(['clients' => $broker->findAll()]);
    }

    #[Get("/clients/{id}")]
    public function read($clientId)
    {
        $broker = new ClientBroker();
        $client = $broker->findById($clientId);
        if (is_null($client)) {
            return $this->abortNotFound();  
        }
        return $this->json(['client' => $client]);
    }
}

Exemple 2 : Traitement d'une insertion avec validation

<?php namespace Controllers;

use Models\Brokers\UserBroker;
use Zephyrus\Application\Rule;use Zephyrus\Network\Router\Post;

class ExampleController extends Controller
{
    #[Post("/users")]
    public function insert()
    {
        // Construire un objet Form depuis les donnĂ©es de la requĂȘte
        $form = $this->buildForm();

        // Appliquer une série de rÚgles de validation sur les champs nécessaires. Il existe une grande quantité
        // de validations intégrées dans Zephyrus. Consulter les Rule:: pour les découvrir.
        $form->field('firstname', [Rule::required("Firstname must not be empty")]);
        $form->field('lastname', [Rule::required("Lastname must not be empty")]);
        $form->field('birthdate', [Rule::date("Date is invalid")]);
        $form->field('email', [
            Rule::required("Email must not be empty"),
            Rule::email("Email is invalid")
        ]);
        $form->field('password', [Rule::passwordCompliant("Password does not meet security requirements")]);
        $form->field('password_confirm', [Rule::sameAs("password", "Password doesn't match")]);
        $form->field('username', [
            Rule::required("Username must not be empty"),
            new Rule(function ($value) {
                return $value != "admin";
            }, "Username must not be admin!")
        ]);        

        // Si la vérification échoue, retourner les messages d'erreur avec leur champs
        if (!$form->verify()) {            
            return $this->json($form->getErrors());
        }

        // Effectuer le traitement si aucune erreur n'est détectée (dans ce cas, ajouter l'utilisateur depuis
        // un courtier et obtenir le nouvel identifiant).
        $clientId = (new UserBroker())->insert($form->buildObject());

        // Retourner au client l'identifiant du nouvel utilisateur
        return $this->json(['client_id' => $clientId]);
    }
}

Contribution

Remerciements ❀

  • Étudiants de la Technique informatique du CĂ©gep de Sorel-Tracy ainsi que les employĂ©s de Onirique pour leur support et idĂ©es d'amĂ©liorations.
  • Auteurs de PHPIDS pour avoir donnĂ© leur permission pour l'inclusion de certaines parties de leur code pour concevoir le module de dĂ©tection d'intrusion.

Sécurité

Veuillez communiquer en privé pour tout problÚme pouvant affecter la sécurité des applications créées avec ce framework., (*9)

Bogues et fonctionnalités

Pour rapporter des bogues, demander l’ajout de nouvelles fonctionnalitĂ©s ou faire des recommandations, n’hĂ©sitez pas Ă  utiliser l’outil de gestion des problĂšmes de GitHub., (*10)

Développement

Vous pouvez contribuer au développement de Zephyrus en soumettant des PRs., (*11)

License

MIT (c) David Tucker, (*12)

The Versions

31/07 2018

dev-master

9999999-dev

Simple PHP framework

  Sources   Download

MIT

The Requires

 

The Development Requires

by David Tucker

31/07 2018

0.10.7.5-beta

0.10.7.5-beta

Simple PHP framework

  Sources   Download

MIT

The Requires

 

The Development Requires

by David Tucker

09/03 2018

0.10.7.4-beta

0.10.7.4-beta

Simple PHP framework

  Sources   Download

MIT

The Requires

 

The Development Requires

by David Tucker

28/02 2018

0.10.7.3-beta

0.10.7.3-beta

Simple PHP framework

  Sources   Download

MIT

The Requires

 

The Development Requires

by David Tucker

31/01 2018

0.10.4.7-beta

0.10.4.7-beta

Simple PHP framework

  Sources   Download

MIT

The Requires

 

The Development Requires

by David Tucker

28/01 2018

v0.11.0.0-dev

0.11.0.0-dev

Simple PHP framework

  Sources   Download

MIT

The Requires

 

The Development Requires

by David Tucker

28/01 2018

0.11.0.0-beta

0.11.0.0-beta

Simple PHP framework

  Sources   Download

MIT

The Requires

 

The Development Requires

by David Tucker

28/01 2018

0.10.4.61-beta

0.10.4.61-beta

Simple PHP framework

  Sources   Download

MIT

The Requires

 

The Development Requires

by David Tucker

27/12 2017

dev-analysis-zYx5DA

dev-analysis-zYx5DA

Simple PHP framework

  Sources   Download

MIT

The Requires

 

The Development Requires

by David Tucker

26/12 2017

0.10.3.0-beta

0.10.3.0-beta

Simple PHP framework

  Sources   Download

MIT

The Requires

 

The Development Requires

by David Tucker

15/12 2017
06/10 2017
05/10 2017
22/09 2017

dev-analysis-XZrvQY

dev-analysis-XZrvQY

Simple PHP framework

  Sources   Download

MIT

The Requires

 

The Development Requires

by David Tucker

01/02 2017

dev-analysis-zEpbNZ

dev-analysis-zEpbNZ

Simple PHP framework

  Sources   Download

MIT

The Requires

 

The Development Requires

by David Tucker