Sujet : Application ?

Bien le bonsoir,

Tout d'abord félicitation pour cette première béta en version 1 !

Voilà un petit temps que je code avec le Zend Framework et un petit temps que j'ai envie de passer à Hoa aussi que je trouve bien mieux foutu que le zf (non non je ne te jète pas de fleurs !). Mais j'ai du mal à faire le pas à vrai dire...

En effet, pour le moment je vois toujours hoa comme un ensemble de librairies bien ficelées entre elles mais pas encore comme un framework qu'on pourrait prendre un main très rapidement ! Disons simplement que pour le moment il faut encore (c'est peut-être le but voulu aussi) imbriquer trop de composant pour faire une application. J'entends par là qu'on doit instancier pas mal de composants !

Ma question est de savoir si tu comptes faire une libraire comme avec le ZF par exemple qui sert à mettre en place une application ...
Je n'aime pas comparer ces deux frameworks mais un des atouts majeurs du ZF c'est justement ce composant application qui permet de mettre une architecture directement en place et je n'ai qu'a faire un petit

<?php
require_once 'Zend/Application.php';
$application = new Zend_Application(APPLICATION_ENV, APPLICATION_PATH . '/config/config.php');
$application->bootstrap()->run();
?>

Dans mon fichier index et suivre l'architecture proposée de base ou la modifier dans mon fichier de configuration et je n'ai plus rien à faire à part bien sur écrire mes contrôleurs, mes vues et mes modèles en fonction de mon/mes modules...

J'avais donc envie de savoir si tu allais proposer un tel système ou mieux tel que tu le fais à chaque fois ? Et si tu ne le fais pas comment me conseil tu de partir pour faire une application ?

Merci

Malian

2

Re : Application ?

Hey smile,

Ton message est passé entre mes mails hier soir. Désolé donc pour la réponse tardive.

Merci pour tes encouragements et félicitations smile, ça fait très plaisir !
Je ne suis pas dérangé par la comparaison entre Hoa et ZF, bien au contraire, du moment que c'est constructif. Il y a du très bon des deux côtés, j'en suis persuadé et convaincu, il n'y a donc pas de problèmes.

As-tu lu le manuel d'apprentissage (actuellement dans le dépôt et bientôt sur le site) ? Je ne trouve pas que le code soit si important que ça, surtout qu'on peut encore le simplifier (et je t'expliquerai comment, mais pas tout de suite dans le manuel car c'est trop tôt).

« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

3

Re : Application ?

J'avais déjà lu le Quick Start avant mais le problème c'est que c'est vraiment pour prendre en main Hoa à partir de rien. En fait je comprends bien comment faire mon application actuellement avec ce que tu proposes mais ça me satisfait moyennement. Ce qui me dérange en fait c'est que pour moi il y a trop de choses à faire pour pouvoir "démarrer" son projet directement. Je prend simplement l'exemple des codes que tu proposes et ce que j'espère voir arriver avec Hoa smile

Par exemple je prend ce code ci,

<?php
require __DIR__ . '/../../Framework/Core/Core.php';

from('Hoa')
-> import('Controller.Dispatcher.Basic')
-> import('Controller.Router');

$router = new Hoa\Controller\Router();
$router->addRule('g', '(?<all>.*)', function ( $all ) {

    echo 'Hello ' . $all . '!' . "\n";
});

$dispatcher = new Hoa\Controller\Dispatcher\Basic();
$dispatcher->dispatch($router);

Ce qui me dérange la dedans c'est de devoir importer certaines classes. Si je veux rajouter une règle c'est pas top. Ok je me doute bien qu'on peut faire un fichier de configuration avec toutes nos routes mais je trouve pas ça top du tout à partir du moment ou après il faut spécifier le controller et l'action.

Dans le même genre,

$dispatcher->dispatch(
    $router,
    new Hoa\Xyl(
        new Hoa\File\Read('hoa://Application/View/Main.xyl'),
        new Hoa\Http\Response(),
        new Hoa\Xyl\Interpreter\Html()
    )
);

Encore une fois je trouve si je veux changer de type d'interpreter je dois le faire directement dans mon fichier index...
Et une dernière chose qui me vient directement à l'esprit c'est ces lignes-ci:

$_this->view->addUse('hoa://Application/View/Picture.xyl');
$_this->view->render();

Si je dois le faire pour chaque action que je crée ça devient redondant !

Maintenant que j'ai fais toutes ces critiques je vais m'auto-critiqué big_smile

Je suis bien conscient qu'il y a des avantages et des inconvénients à cette manière de faire. Par exemple avec le ZF je désactive systématiquement le contrôle automatique du router qui si il voit une adresse du genre http://monsite.com/module/controller/action ! Et dans un fichier "routes.config.php" je définis toutes les routes ce qui, il me semble, est bien plus propre. Et là justement vient la grande question de la gestion des modules ? (bundles actuellement dans symfony2)

J'aime pouvoir avoir une architecture très structurée ou je peux avoir un module par défaut et puis d'autres modules qui sont totalement indépendant les uns des autres. Ca sous-entend une gestion des configurations en fonction des modules, des contrôleurs, vues en fonction des modules, routes en fonction des modules,... Pour le moment j'ai l'impression que on a la possibilité d'avoir qu'une seul grosse application avec 1 dossier vues, 1 dossier contrôleurs, 1 dossier pour tout en fait... Dis moi que je me trompe big_smile

En ce qui concerne la réécriture de

$_this->view->addUse('hoa://Application/View/Picture.xyl');
$_this->view->render();

Je suis bien conscient que ça a ces avantages mais il serait plus facile de gérer ça "automatiquement" avec une configuration par défaut. Je sais bien qu'une action n'a pas nécessairement de vue mais il me semble que c'est plus rare que le contraire.

La solution à tout ça ?
Ne me fais pas dire ce que je n'ai pas dis ! Je ne dis pas qu'il ne faut pas devoir importer les classes, je ne dis pas qu'il faut que le rendu de la vue soit automatique et je ne dis pas qu'on doit avoir une architecture tel que je l'ai proposé avec des modules !

Ce que je veux dire c'est que ce serait vraiment bien d'avoir une librairie en plus du type de celle de Zend_Application qui permet de faire tout ça sans que ce soit à nous de le faire ! Il nous suffirait d'avoir une fichier config.php prenant les configurations de bases d'une application et la classe Application elle se charge de tout. Instancier Xyl, le routeur, le dispatcher, le rendu de la vue automatique, l'architecture du projet etc...

Les avantages c'est qu'on a pas à partir de rien pour faire une application et on part de quelque chose de plus ou moins structuré qu'on peut bien entendu modifier. De cette manière on aurait un "noyau" d'une application et il suffirait (comme avec symfony2) de rajouter une dossier en plus dans un dossier module qui serait indépendant des autres ! Dans ce dossier on aurait toute la structure de base d'une application. Il aurait son propre dossier de vues/contrôleurs/configs/modèles/services/...

J'espère que je me suis bien exprimé... Si non n'hésite pas à me poser des questions ^^

Malian

Re : Application ?

lol lol Tu n'as pas très bien compris Hoa toi ^^
Mais en ce moment c'est très dur pour hoa car il a une très grosse restructuration et la doc est en cours.

Dans le dossier Application (ou Applications si tu souhaite intégrer plusieurs application au sein de hoa qui comporteront de même classes métiers ou librairies communes) tu auras les dossiers :

  • Controler

  • Model

  • View

  • Public

Dans le dossier Public se trouve ton fichier bootstrap (index.php)
C'est la que va comporter le routage de Hoa (architecture applicative)
Il est facilement possible d'utiliser toute sorte de librairie Hoa ou Hoathis(personnel) donc généralisé certain script.
(Avec Hoa tu atteins le top pour ne pas faire de redondance : garantie ou alors change l'architecture que tu as dans la tête)

Pour en revenir au code suivant :

$_this->view->addUse('hoa://Application/View/Picture.xyl');
$_this->view->render();

Il est normal de spécifier quel xyl on veut utiliser. (pour ma part je connais pas totalement xyl donc je trouve ça normal que tu puisse trouvé pas ça très pratique mais j'ai vraiment hâte de pousser xyl pour voir toutes les possiblités)

Et la partie render est logique car tu peux ne pas afficher ta page (ou faire bien d'autres choses avec) est une ligne pour moi c'est pas une énorme redondance.

En manipulant hoa tu devient maître de l'application mais ce qui est magique c'est que n'importe qui avec un minimum de connaissance en objet peut modifier le code sans problème.

Le commencement est très très dur ! Je te l'avoue ! Mais une fois que c'est partie Hoa c'est trop beau !!

Tout le monde te le dira ici ! On est là, c'est absolument pas pour rien !!!

Je fais un peu de Zf mais ça me rend pas heureux Hoa c'est totalement différent.

merci Hywan wink et je te laisse la parole

Continue à percer pour le démarrage mais attend un peu la doc car pour le moment difficile de manipuler les différentes possibilités.

Bon courage wink On est là si besoin

" L'imagination est plus importante que la connaissance. La connaissance est limitée alors que l'imagination englobe le monde entier, stimule le progrès, suscite l'évolution. " - Life in the cloud :: Getting Started with Hoa - Hoa débutant

Re : Application ?

$_this->view->addUse('hoa://Application/View/Picture.xyl');
$_this->view->render();

Tu es trop ZF mon ami, une action donnant une vue est typiquement dans les frameworks PHP.

Or ici, tu n'est pas dans un framework PHP, mais dans un Framework qui utilise PHP.

Hoa est à PHP, ce que Rails est à Ruby (celle-là je l'aime bien, tu me contredis hein Hywan !).

Si tu regardes les bonnes pratique du MVC, on applique toujours un render.

Travaillant sur différents langage de programmation, tu retrouveras la système Hoa sur bien d'autres framework notamment Django(Python).

6

Re : Application ?

Il y a un débat intéressant. Je dois réfléchir avant de te (vous) répondre. Je te ferai une réponse demain smile.

« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

7

Re : Application ?

Bon, je savais que je m'étais mal expliqué smile Je tiens à remettre les choses dans le contexte aussi ! Ca n'a pas l'air mais ça fait depuis plus d'un an (je sais même plus dire) que je suis de très près l'évolution de Hoa et que je bidouille avec Hoa !

Je ne remets pas du tout en cause le travail d'Hywan ni la manière dont Hoa fonctionne. Ma question était de savoir si Hywan prévoyait de faire une librairie Hoa pour faire de Hoa un framework full-stack ! Car actuellement, au même titre que Zend, Hoa n'est pas du tout un framework qui nous impose une architecture (contrairement à Symfony). Personnellement je préfère cette liberté ! Car elle nous permet d'utiliser Hoa comme bon nous semble ! On peut en faire ce qu'on veut et je vous rejoins tous sur cet avis !

Donc, oui je connais Hoa et encore mieux le ZF, c'est pourquoi je me permet de me demander si Hoa va intégrer une librairie du type de Zend_Application qui nous "imposerait" (sans nous imposer totalement) une architecture d'une application web ! Je reviens aussi sur ce terme "Application" qui apparemment n'a pas le même sens pour toi (Ecureuil Virtuel) et pour moi, ou alors je me suis encore mal exprimer big_smile

Pour moi une application c'est mon projet dans son entièreté. Dans mon application je peux avoir des modules. Donc pour moi, NON, il n'y a pas 1 dossier Controler/Model/View/Public ! Pour moi c'est chacun de mes modules qui contiennent ces dossiers. Si pour toi une application est un module alors ça revient +- au même que moi. Une architecture d'un de mes projets est de ce genre:

- Application
-- Bootstrap.php (Initialisation de mon application)
-- /configs (Fichiers de configuration de mon application)
-- /modules
---- /default (Module par défaut)
-------- Bootstrap.php (Initialisation de mon module par défaut)
-------- /configs (Fichiers de configuration de mon module par défaut)
-------- /controllers (Contrôleurs de mon module par défaut)
-------- /models (Modèles de mon modules par défaut)
----------- /Mappers
-------- /views (Vues de mon module par défaut)
-------- /services
-------- /forms (Formulaire de mon module par défaut)
-------- /public (Fichiers CSS/JS/Images,... de ce module par défaut)
----/blog
-------- (idem)
----/forum
-------- (idem)
- /library
-- /Zend
-- /Doctrine
-- /Hoa
- /public
-- index.php (Fichier de base)

Je reconnais que c'est un dérivé de l'architecture modulaire que Zend me propose mais c'est vraiment ce que j'ai trouvé de mieux pour le moment... Quoi que l'architecture que propose symfony2 me plait pas mal non plus (http://symfony.com/doc/2.0/book/bundles.html).

Cette architecture je peux la mettre en place parce que Zend me le propose et j'ai pas du me casser les c***** pour le faire (sauf les quelques changements que j'y ai apporter après l'expérience). Donc ce que je demande c'est de savoir si Hywan tu prévois ou si c'est déjà prévu ou mieux si c'est déjà implémenté ?

Pourquoi une tel demande ? Parce que honnêtement j'ai pas envie de devoir faire moi même une classe qui se charge de charger les configurations pour mon modules, d'initialiser mon module, de faire le bon rendu de la vue, d'intégréer mes fichiers CSS/IMG/JS qui sont en dehors du répertoire public dans le répertoire accessible depuis le navigateur !

Zend le propose, symfony le fait par défaut pourquoi pas Hoa ?

Maintenant peut-être que j'ai loupé quelque chose ? Peut-être que une application pour vous c'est un module pour moi ? Peut-être que .... ?

@MaitrePylos: Oui je sus trop ZF mais je travail exclusivement avec ZF parce que j'aime sa liberté (c'est pourquoi j'aime Hoa aussi !) mais pour moi il est loin d'être parfait ! Il a de bonnes idées (Zend_Application ?) mais mal implémentée ou pas très intuitive, c'est là que Hoa se démarque pour moi !

@MaitrePylos et @Ecurueil Virtuel: Oui j'utilise une "mauvaise pratique" qui est de faire un rendu automatique d'une classe mais chez moi elle me facilite la vie car si mon action ne renvoie pas une vue soit je passe a une autre action au cours de cette action et le problème ne se pose pas soit je désactive pour cette vue la le rendu automatique et j'ai plus souvent l'impression d'avoir un rendu automatique qu'une désactivation de rendu. Un simple exemple: dans ma classe BlogController et mon action listNewsAction si je devais faire le rendu d'une vue je devrais faire un truc du genre $this->render('/Blog/listAction.phtml'). J'imagine maintenant avoir dans mon contrôleur 20 actions avec 20 fois $this->render('/Blog/action.phtml') si je change le nom de mon contrôleur et qu'il devient CMS parce que mon application devient un CMS et plus un blog. Pour plus de cohérence dans le nom de mes dossiers mon dossier Blog deviendrait CMS non ? Je dois aussi changer 20 fois $this->render('/CMS/action.phtml') ? Je ne dis pas du tout que ce que je propose est mieux ou moins bien je ne fais que partager ! smile

@Ecureil Virtuel: Tu trouves que la prise en main de Hoa est difficile ? Personnellement je ne trouve pas du tout ! Ce qui est difficile avec un framework tel que Hoa (ou zend encore...) c'est les bonnes pratiques ! Mais ça pour moi c'est dû à la liberté que Hoa offre !

Je vois maintenant le pavé que j'ai écris et je vais essayé de résumer les choses !

Je ne demande pas que Hoa soit un framework Full-Stack qui nous "impose" des choses. Je dis juste que ce serait bien qu'une librairie comme celle de Zend_Application nous propose de nous guider un minimum (Zend) ou un maximum (symfony)?

Avant de signé je veux déjà répondre à ceux qui me diront que Hoa est différent de Zend ou symfony. Je leurs répondrais que je compare parce que c'est mes références et que c'est aussi une des références mondiales en terme de framework PHP ! Je pense que la comparaison, même si j'aime pas faire ça, est quelque chose de très positif parce qu'on peut prendre les points fort d'un coté et ne pas répéter les erreurs ! Moi j'aime le composant Zend_Application ! Je le dis haut et fort ! Et j'aimerais que Hoa intègre quelque chose du même genre ! En mieux si possible mais ça je sais que Hywan le ferra big_smile

Malian

PS: Hoa c'est bien !

Re : Application ?

Whaoooooooo l'architecture de malade je vois une architecture je fuis !!!!


Regarde un exemple d'architecture :

http://hoa-project.net/Forum/post/2050/#p2050

tu aura donc par exemple :

Application/
---Controler/
------Index.php (controler pour la page d'accueil, IndexControler has you want in the hoa configuration)
------Contact.php (controler pour la page contact)
------Administration.php (pour le backOffice)
------......
---Model/
------tes modeles
---Public/
------index.php (ton bootstrap)
------.htaccess
------js/
------css/
------img/
---View/
------HendTheme/ (ton theme)
---------Front.phtm  (comprenant le header et le corps de base de ton site (<head>, header, menu, footer) (*)
---------Index/
------------Index.phtml (le corps de la page d'accueil)
---------Contact/
------------Index.phtml (le corps de la page d'accueil)
---------Administration/
------------Index.phtml
------------Email.phtml

Data
Hoa (comprenant tes hoathis ! tes librairies propres à ton application c'est ce que tu veux nan ?!)
           

(*)et tu aura la ligne <?php echo $this->_page; ?> qui fera un include des page en cours (voir les prochaines lignes)

Pour info tous nom de dossier que je t'ai donné son personnalisable et dans ton controller tu peux très bien avoir des dossiers genre Index/ Blog/ Contact/ et comporter plusieurs controller.

L'architecture qui est dans le lien que je t'ai donné j'aurai pu très bien faire le tout dans une application et pas dans un dossier applications/ mais j'ai voulu tester les possibilités de Hoa. Tu est libre (après si tu aime bien le gaz ...)
         

Désolé j'ai pas tout lu je me suis arrêté à l'architecture c'était juste Wahou

Je sais que t'est libre avec Hoa mais de là à vouloir reproduire un truk du style (en plus généré par un Hoa_Apllication) Jamais !

On a la chance d'avoir des librairies les plus clean ! Tellement light que oui on est obligé d'importer 2, 3, 4 classes mais c'est normale !

Zend c'est des modules codés par tellement monde que c'est une usine à gaz ! (après si tu aime bien le gaz ... tongue)

Cdtl

" L'imagination est plus importante que la connaissance. La connaissance est limitée alors que l'imagination englobe le monde entier, stimule le progrès, suscite l'évolution. " - Life in the cloud :: Getting Started with Hoa - Hoa débutant

9

Re : Application ?

Désolé mais non ! smile
Si tu veux rajouter un module forum tu dois rajouter un ForumController dans ton dossier controllers ! tes modèles dans ton dossier modèles et des vues dans ton dossier view ! J'appel pas ça de la modularité moi ! Plein de fichier dans des dossiers différents ... je parle meme pas des css,js,img... !

Dernière fois dit par Malian (10 Mar. 2011 02:09)

10

Re : Application ?

En fait je suis en déplacement aujourd'hui (à Paris pour ma thèse !), donc je répondrai vendredi smile.

« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »