Giter VIP home page Giter VIP logo

peuchepeu-framework's Introduction

Qu'est ce que c'est que ça ?

Build Status SensioLabsInsight Coverage Status

Dans le but de préparer des tutoriels "sans framework", j'essaie de construire une base qui pourra être utilisée pour de futures vidéos. Le but est de construire une base propre et organisée qui peut facilement être étendue avec des modules qui fonctionnent de manière indépendantes. L'idée est de poser le code en amont et de voir les problématiques rencontrées pour ensuite enregistrer une série de vidéos sur la conception du code de A à Z en évitant de partir dans toutes les directions

Principe

  • Framework, fournit les fonctionnalitées abstraites qui seront partagées entre les projets
  • App/Base, fournit les élément partagés par les blocs de l'application (templates de bases par exemple)
  • App/{Blog,Payment,Auth...}, permet de créer des blocs interchangeables et réutilisables dans l'application. Le principe est de découper notre application en fonction du contexte, plutôt que d'appliquer une structure MVC à la lettre. Chaque bloc doit avoir une classe Module qui permet d'enregistrer les routes, les classes ou autre.

Pour démarrer le projet

Pour configurer et travailler sur l'application il faut utiliser make. Si vous êtes sur Windows utilisez cygwin ou "bash for windows"

  • make install, installe les dépendances et copie les fichiers nécessaires
  • Editez le fichier config.php suivant vos besoins, inspirez vous du fichier core/config.php
  • make migrate, pour créer les tables
  • make seed, pour remplir la table (facultatif)
  • make server, pour lancer le serveur de développement

Dépendances

  • Slim, pour gérer le routeur
  • PHP-DI, pour gérer l'injection de dépendance, à voir pour la suite si ça ne "complique" pas trop la compréhension
  • Twig, pour les templates
  • Phinx, pour gérer les migrations et le seeding de la base de données
  • PHPUnit, pour les tests unitaires (what else ?)
  • php-ref, pour des debugs plus joli :) (r() et ~r())
  • Pagerfanta, pour paginer les résultats

Réflexions

  • L'utilisation d'un ORM n'est pas encore prévue, je pense que même si ça clarifie le code cela apporte aussi une couche d'abstraction qui ne convient pas à tous les projets et c'est très long / chiant à tester. Choisir un ORM tiers va rendre notre application dépendante de cet ORM. On essaiera tant que possible d'éviter d'y avoir recourt.
  • Pour créer des commandes on n'utilisera pas le composant Symfony/Console mais on se "contentera" d'un fichier MakeFile. Inutile de réinventer la roue et nos besoins restent relativement simples.
  • Créer les tests unitaires en parallèle du projet est indispensable mais je ne suis pas sûr de le faire en vidéo car c'est long et répétitif (au pire ils seront fournis avec les sources).

Base

  • Poser la base Slim / PHP-DI
  • Module Blog (front, permet de voir l'interaction avec la base de données)
  • Système de migration / seed
  • Tests unitaires
  • Authentification des utilisateur
  • Back office pour la gestion des articles
  • Upload d'un fichier à la une
  • Gestion du slug (check unicité)
  • Création de miniature pour les images des articles
  • Ajout des catégories
  • Page contact (permet de voir le traitement des formulaire)
  • Réactivatation du middleware Whoops
  • Page d'erreur personnalisée

Module compte utilisateur

  • Inscription
  • Suppression du compte
  • Rappel du mot de passe

Module e-commerce

  • Gestion du catalogue produit
  • Mise en place de l'achat direct d'un produit (paiement via stripe surement)
  • Mise en place des factures ?

Module e-commerce / monnaire virtuelle

  • Achat de points (monnaie intermédiaire)
  • Achat d'un produit en utilisant les points obtenus

Participer ?

La base est maintenant faite si vous le souhaitez vous pouvez critiquer le code existant et proposer des changements / refactor. Le but n'est pas de créer le prochain Laravel / Symfony, mais de voir comment on peut créer une structure de projet simple avec PHP 7 et les librairies actuellement disponibles dans l'écosystème PHP.

peuchepeu-framework's People

Contributors

grafikart avatar liinkiing avatar

Watchers

Ramata 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.