JeuWeb - Crée ton jeu par navigateur
Orpheus, mon framework PHP Open Source - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Orpheus, mon framework PHP Open Source (/showthread.php?tid=6377)

Pages : 1 2 3 4 5


Orpheus, mon framework PHP Open Source - Cartman34 - 09-09-2012

Bonjour,

Suite au développement de très nombreux sites/applications web en PHP, j'ai abouti à une structure commune permettant une bonne ré-utilisabilité.
De cette structure, j'ai créé un framework afin d'universaliser mon travail, de le rendre plus extensible et, bien sûr, lui permettre d'être reconnu.

Le principe de base de ce framework est d'allier simplicité, légèreté et extensibilité afin de sortir du modèle de la plupart des autres frameworks.
Ce framework est allégé de toute fonctionnalité inutile et permet, par son système de bibliothèques, d'ajouter autant d'extensions que l'ont souhaite sur chaque composante.
Les pack de bibliothèques fournis peuvent être considérés comme des Bundles, ils fournissent un ensemble de fichiers permettant de configurer les bibliothèques inclues et/ou d'ajouter les modules nécessaires.
Malgré un principe MVC que partiellement respecté pour des raisons de performances, le cœur est suffisamment générique pour ajouter son propre système MVC ou un système MVC générique, un complet sera développé en fonction des besoins.

Bien qu'abouti à une base solide, le framework manque de maturité et nécessite que certains points soient revus.

Voici quelques liens:
Le site de démonstration d'Orpheus
Le site de documentation d'Orpheus
La page de téléchargement d'Orpheus

Ce framework est sous licence MIT (entièrement libre de droits).
N'hésitez pas à la tester et à me rapporter tout problème, amélioration possible et toutes vos questions.

PS: Je précise que l'équipe IGstaff n'existe plus, c'est pour ça que tout est développé sous mon pseudo personnel (Cartman34) ou sous mon vrai nom.


RE: Orpheus, mon framework PHP Open Source - SorenS - 09-09-2012

Tu devrais le mettre sur Github ou quelque chose du genre. C'est vraiment l'idéal pour le lire le code et/ou y participer.
Et tu auras des retours plus facilement je pense


RE: Orpheus, mon framework PHP Open Source - Cartman34 - 09-09-2012

Ce projet a déjà un dépôt SVN sur mon redmine, le projet est accessible ici.
Y'a un forum, un wiki, des fichiers, des documents, une gestion des demandes, ce qu'il faut pour l'équipe de dev aussi.
Y'a pas grand chose de rempli, faut que je vois en fonction des besoins.
Tout n'est pas ouvert, je ne sais pas encore quelles limites imposées, j'ai ouvert un peu aux non membres et aux anonymes.


RE: Orpheus, mon framework PHP Open Source - niahoo - 09-09-2012

hello,

c'est interessant, pourrait-on voir des exemples de codes qui utiliseraient ce framework ? un controlleur par exemple.


RE: Orpheus, mon framework PHP Open Source - Cartman34 - 09-09-2012

Orpheus ne fonctionne pas avec des classes Controller comme dans la majorité des autres frameworks, sinon ça aurait servi à rien de refaire un framework.
C'est pour cela que je n'ai pas nommé cela Controller mais modules.
Les modules séparent des manières assez minime le contrôleur de la Vue, juste le nécessaire pour éviter d'éventuels erreurs d'header déjà envoyés, et encore la capture du buffer de sortie permet dans tous les cas de ne pas les avoir.
Cependant, il profite pleinement des avantages que ça confère et pour plus de raisons que "seulement" les raisons de performance.

Des modules sont proposés dans des packs, notamment le publisher.
Si vous voulez tester Orpheus, je vous conseille le pack Full.

Attention, une mise à jour a eu lieu ce soir, je ne l'ai pas encore validée en production.
Je le précise car elle permet d'éviter les erreurs quand le site est dans un sous-dossier.


RE: Orpheus, mon framework PHP Open Source - SorenS - 09-09-2012

Mélange entre contrôleur et la vue ? Bon en tout cas ça ne sera pas pour moi.

Tu l'utilises pour des sites de quelle genre ? Des petites applis ?


RE: Orpheus, mon framework PHP Open Source - srm - 10-09-2012

Je suis curieux de savoir quel avantage ça confère de découper le code ainsi.


RE: Orpheus, mon framework PHP Open Source - Cartman34 - 10-09-2012

Concrètement, pour ceux qui sont un peu plus strictes, il existe un système de vues pouvant être séparé du module.
Le système est générique, on choisit, et cela même dans la configuration, qu'elle sera la classe gérant l'affichage de sortie, ces classes sont nommées Renderer (Rendu ou Moteur de rendu), il peut y avoir des renderer générant du HTML, du JSON, du CSS, du JPEG ou tout autre format et même générant du HTML à partir d'un moteur de template.
Le module lui peut modifier certains points de configuration (comme le Renderer utilisé) et gérer la communication entre l'utilisateur et les objets gérant les différentes actions à effectuer.

Ce que je voulais (et ce que j'aime), c'est de pouvoir créer un nouveau module avec un simple nouveau fichier, vous écrivez "Hello World" dans un fichier php, e.g hello.php, dans le dossier "modules" et vous pouvez ensuite directement y accéder et l'afficher sur sa page, e.g "hello.html" (comportement du routeur par défaut).
Les droits de ce module peuvent ensuite être configuré si besoin, par défaut il est accessible par tous.

Un point fort d'Orpheus est sont système d'objets permanents, toute entité de la base de données est (ou peut être) un objet PHP.
J'ai développé une bibliothèque pour PDO, afin de simplifier son utilisation (et de le rendre procédural) qui est utilisé pour Mapper des requêtes SQL selon le driver utilisé et ainsi c'est un début d'abstraction de la base de données. Actuellement seuls les Mappers pour MySQL et PostgreSQL ont été développé.
Puis il y a le PermanentObjet, une classe à hériter qui gère naturellement l'Ajout, la modification, la suppression et la sélection en imposant un modèle concret permettant de veiller à l'intégrité et la sécurité des données.
De ce PermanentObjet découle d'autres classes types permettant de gérer une seule fois des propriétés communes à plusieurs objets, comme les objets à statut ou les publication (qui sont des objets à statut).

Il est conçu pour pouvoir supporter n'importe quelle application, je l'ai orienté, à travers les bibliothèques supplémentaires, vers ce qui ressemble à un CMS pour mes besoins mais ce n'est pas une limite.
Ce framework est développé pour PHP en considérant les limites et les possibilités de PHP.


RE: Orpheus, mon framework PHP Open Source - srm - 10-09-2012

Ton module c'est un contrôleur alors, ou je n'ai pas compris, car en plus les avantages que tu cites on peut aussi les avoir avec un contrôleur.

Concernant le point fort d'Orpheus, c'est semblable à tous les autres framework ou je me trompe ?
Tu sais gérer l'imbrication d'objet avec ton système ?
Si je fais :
select * from user
inner join gender on (user.gender_id = gender.id)

Ca me retourne quoi ?


RE: Orpheus, mon framework PHP Open Source - Cartman34 - 10-09-2012

C'est un contrôleur au sens où il contrôle. ;-)
Mais les plus puristes n’apprécieraient surement pas ça.
C'est son rendu à lui qui est considéré comme contenu de la page, il peut choisir de faire appel à une vue mais c'est son rendu à lui qui est utilisé, c'est important vis à vis de la temporisation de sortie et de par le faire qu'aucun autre rendu n'est appelé ensuite.

Je pense que le plupart des frameworks propose un PermanentObjet et du Mapping SQL. Il n'est pas forcément original sur ce point, c'est juste qu'il est conçu pour être performant et simple d'utilisation. Le pire exemple reste un bon exemple de ce qu'il ne faut pas faire, le mapping SQL de ezComponent est une horreur (comme à peu près toutes les fonctionnalités d'ezComponent) et là c'est au plus simple.

Concernant l'imbrication d'objets, il ne sait pas reconnaître plusieurs objets dans une même requête.
Je pense l'ajouter mais j'ai quelques réticences, ça va à l'encontre du modèle objet mais ça apporte des performances, qui sont importantes pour Orpheus (je crois bien que je l'ai assez dit Big Grin ).

Attention, ce framework était ma base de développement et je l'ai amélioré pour le rendre plus extensible et fournir les services supplémentaires attendus pour un framework, il le faut différemment. C'est surtout sa capacité d'évolution et ses performances qui sont forts et originaux (même si beaucoup de framework s'en vantent, ils allient rarement les deux).

Ce framework n'est pas abouti pour toutes les utilisations possibles et imaginables, je le poste ici pour qu'il soit critiqué et conseillé, et de même pour mes explications.