Retour sur le MVC

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Retour sur le MVC

Re: Retour sur le MVC

par katagoto » 11 mars 2010, 17:46

J'avais fais une erreur, dans la partie objet je n'appelais pas la bonne méthode :

Normal :
14.157455921173 s
18.01985502243 s
NameSpace :
14.497887134552 s
24.697901010513 s
Objet static :
17.240709066391 s
24.181578159332 s
C'est plus cohérent quand même, et là ça me permet d'avoir un code homogène et cohérent sans trop de pertes de performances.

Re: Retour sur le MVC

par katagoto » 11 mars 2010, 07:26

Non, c'est juste qu'elle sont loin d'être exhaustive, d'autre paramètre entre en jeu.
N'empêche que ça m'incite à faire des objets statics pour les contrôleurs et des namespace pour les modèles.
Ma question est donc : est-ce moche ?

Par avance merci

Re: Retour sur le MVC

par niuxe » 11 mars 2010, 05:22

Hello,
ouais mais les benchs sur de simples opérations comme ca faut se méfier
Pourquoi ? Elle ne sont pas précises, c'est que tu veux dire ?

Re: Retour sur le MVC

par katagoto » 10 mars 2010, 13:48

je suis complètement de cet avis, mais ça me fait réfléchir de voir que pour les namespace lors des appels dynamique ce soit plus lent.

Re: Retour sur le MVC

par stealth35 » 10 mars 2010, 12:49

ouais mais les benchs sur de simples opérations comme ca faut se méfier

Re: Retour sur le MVC

par katagoto » 10 mars 2010, 12:40

Là non plus je vais pas les avoir, j'ai repris ma classe SQL, ma classe "poubelle" et ma classe de gestion des sessions, il faut ensuite que je code la gestion des droits.
Pour l'instant je m'occupe du Contrôleur Frontal faççon Hoa Framework.
J'ai donc cherché le moyen d'appeler une fonction par son nom, facile avec $nom().
J'ai donc fait des bench (sur 10 millions d'intéractions), et la, stuppeur, je vous laisse constater ça :
<?php
function inutile()
{
    for($i = 0; $i < 25; ++$i) ;
}


function call($nom)
{
    if(function_exists($nom))
        $nom();
}

$deb = microtime(true);

for($i = 0; $i < 10000000; ++$i)
    inutile();

echo (microtime(true) - $deb)." s\n";

$deb = microtime(true);

for($i = 0; $i < 10000000; ++$i)
    call('inutile');

echo (microtime(true) - $deb)." s\n";
14.133659124374 s
23.357750892639 s
Pour l'appel à une fonction "simple", on perds 65%.

Version namespace :
<?php
namespace A\B\C;
function inutile()
{
    for($i = 0; $i < 25; ++$i) ;
}


function call($n, $nom)
{
    $f = '\\A\\'.$n.'\\'.$nom;
    if(function_exists($f))
        $f();
}

$deb = microtime(true);

for($i = 0; $i < 10000000; ++$i)
    \A\B\C\inutile();

echo (microtime(true) - $deb)." s\n";

$deb = microtime(true);

for($i = 0; $i < 10000000; ++$i)
    call('B\C', 'inutile');

echo (microtime(true) - $deb)." s\n";
14.087102174759 s
28.731594085693 s
Pour un appel version namespace, on perds plus de 100%, c'est à peu près normal.

Version objet static :
<?php
class AControleur
{
static function inutile()
{
    for($i = 0; $i < 25; ++$i) ;
}
}

function call($n, $nom)
{
    $f = 'MyTest'.$n.'::'.$nom;
    if(function_exists($f))
        $f();
}

$deb = microtime(true);

for($i = 0; $i < 10000000; ++$i)
    AControleur::inutile();

echo (microtime(true) - $deb)." s\n";

$deb = microtime(true);

for($i = 0; $i < 10000000; ++$i)
    call('A', 'inutile');

echo (microtime(true) - $deb)." s\n";
17.065737009048 s
12.426862955093 s
Alors là, on perds 21% sur l'approche classique ou namespace, mais on gagne 29% entre les deux.
Je suis désemparé.
Je n'ai aucune explication.
Donc je me tâte à faire des namespaces pour les modèles et des objets les contrôleurs.
J'ai peur que ce soit moche, vous en pensez quoi ?

Par avance merci

Re: Retour sur le MVC

par stealth35 » 10 mars 2010, 11:48

Justement, j'utilise les namespace pour avoir cette hiérarchisation, c'est légèrement moins lisible, mais c'est plus "structuré".
Bon, par contre les anti-slash en PHP ça pue

Par avance merci de vos suggestions
ouais c'est un peu bizarre les anti slash, mais ducoup ca me choque pu parce que je les utilises uniquement en en tête de fichier, apres dans le code ils sont pu la

Re: Retour sur le MVC

par katagoto » 09 mars 2010, 19:28

Justement, j'utilise les namespace pour avoir cette hiérarchisation, c'est légèrement moins lisible, mais c'est plus "structuré".
Bon, par contre les anti-slash en PHP ça pue

Par avance merci de vos suggestions

Re: Retour sur le MVC

par stealth35 » 09 mars 2010, 11:17

hello, au niveau des namespace je te conseil d'utiliser "use"

ex :
$base = new \Base();

//plutot faire

use \Base
$base = new Base();
un peu comme en java ou as3 tu ne ferais pas

Code : Tout sélectionner

var test:ByteArray = new flash.utils.ByteArray();
mais

Code : Tout sélectionner

var test:ByteArray = new ByteArray();
ca aura l'avantage d'être plus claire, mais par contre tu devrai déclarer toutes les classes que tu utilises

Re: Retour sur le MVC

par katagoto » 09 mars 2010, 07:54

La vrai question est "est-ce que l'implémentation MVC de katagoto est correcte et complète ?"

Hier soir, j'ai eu la chance de parler à HyWaN et Nagol.
Je ne vous cacherais pas que j'ai eu un moment de doute métaphysique.
Cependant, j'ai remarqué qu'un contrôleur par module, réunion des contrôleurs dans un objet, n'était pas si mal.
En revanche, je pense que l'impacte, en terme de performances, de l'objet sur PHP est considérable, d'où ma tentative de limitation de ceux-ci.

Par avance merci

PS : Ma classe SQL ne vous gène plus ? (je peux ré-expliquer)

Re: Retour sur le MVC

par zeus » 09 mars 2010, 00:24

Sinon, pour en revenir au sujet de base, la question était "Que pensez vous de l'approche de katagoto sur le MVC" ;)

Re: Retour sur le MVC

par niuxe » 08 mars 2010, 22:04

Ça faisait longtemps que je n'avais pas lu un sujet sur les frameworks

Hello tout le monde,
[...]
3. L'objet a des avantages et des inconvénients que je ne détaillerais pas ici...tu trouveras une ample documentation sur les sites appropriés.
[...]
Aurais tu un/des petits liens à partager stp. J'ai lu il y a quelques temps que php en full objet n'est pas une si bonne pratique. Cependant, il n'y avait pas d'argument derrière. Donc, je me retrouve avec un gros point d'interrogation à ce propos.
[...] Cake PHP, non ?
Pour ma part, je connais un tout petit peu cake. J'ai trouvé ça pas mal (Cake Bake permet de créer une interface (édition à la volée du MVC) en exécutant 2 commandes à partir de cet utilitaire). Soucis temps d'exécution des requêtes. Un peu mou le gâteau (fondant au chocolat). Avec l'OS actuel, je n'ai pas installé APC. Donc le temps est un peu long. À première vue, Cake on s'y retrouve très facilement dossier : modèles, contrôleurs et vues. Je crois que Cake se focalise plutôt dans l'aspect visible de l'application (html/css/javacript/("Flash")) et est pour des applications moyennes (là, je m'avance un peu).

Pour Symfony, j'ai laissé tombé. Symfony ne s'installe pas facilement sur Windobe (heu windows). :p. Je me suis dit que je n'allai pas mettre trois plombes à installer symfony. J'ai l'impression que c'est une formule 1 au démarrage lent (miser sur le long terme). Je ne connais pas le YAML, mais j'en ai déduis que c'était la même chose que l'XML. Si je me trompe merci de me reprendre. :)

Après je pense que Symfony est plutôt le Framework du moment (le moment à 4/5 ans je crois quand même). Aussi, j'ai vu que ce dernier récupère pas mal de choses (smarty, librairies zend, etc.). Donc j'ai l'impression qu'il prend le meilleur (ce qui est normal). Aussi, faudrait voir sa notoriété/reconnaissance dans le monde (Zend vs Symfony). Dans le cas où on veut s'expatrier et être reconnu.

Pour ma part, je pencherai plus sur PEAR et Zend. Pear ne risque pas de se casser la gueule et est constamment en renouvellement (voir les MAJ constantes). Tandis que Zend est le Framework PHP par excellence (moteur Zend, applications Zend, bouffe du Zend à tout va). ça me fait pensé à crosoft.

Sinon, il y a un Framework qu'on parle très peu et qui est très utilisé aussi en France, c'est le perroquet red (Copix). Il est utilisé dans la plupart des administrations de notre chère République. D'ailleurs, je crois que les développeurs de ce projet étaient de la team de codeIgniter. Je crois aussi que c'est le plus vieux Framework. Quoique Pear est peut être aussi vieux.

Après faut du temps pour appréhender un Framework. Et surtout faut pas lâcher l'affaire quand on étudie un tel Framework.

Bonne soirée à vous :)

ps : Il serait surement intéressant de lancer un sondage sur phpfrance :
Quel Framework utilisez vous ?
Symfony, Zend, Copix, Cake, Pear, Codeigniter, etc., aucun.

Je pense qu'on éviterait peut être les questions redondantes du forum.

Re: Retour sur le MVC

par katagoto » 08 mars 2010, 20:22

Pour le 1 : des goûts et des couleurs...Symfony 2.0 revient à des fichiers de confs au choix (XML, YAML, PHP). En Zend Framework, ce sont des fichiers .ini si mes souvenirs sont bons.
2. L'intérêt des formulaires en objets est de bénéficier de l'héritage.
3. L'objet a des avantages et des inconvénients que je ne détaillerais pas ici...tu trouveras une ample documentation sur les sites appropriés.
ça y est, je suis convaincu pour les formulaires
Ma classe SQL semble plaire à tout le monde :)
Je m'explique, ma classe SQL gère les erreurs, par exemple, si un INSERT/UPDATE/DELETE ne fonctionne pas pour une question de clef étrangère, de contrainte d'unicité ou d'intégrité, l'erreur sera intercepté et le rowCount sera placé à 0, du coup, je saurais que l'instruction n'a pas pût être réalisé, et je le signalerais à l'utilisateur : "Il est interdit de poster ici".
Seulement, au lieu d'avoir un catch, systématique, je l'ai dans ma classe SQL, je prends ça comme une gestion centralisé des erreurs.
Je prends note.
Oui, ça m'avance beaucoup, seulement, hors-mit l'id du membre, je ne donne rien d'autre (j'ai fais un __get de plus), je ne vois pas vraiment où est le mal.

Par avance Merci

Re: Retour sur le MVC

par stealth35 » 08 mars 2010, 11:56

ouai pour le ZF niveau config c'est .ini mais aussi .xml, (on peu aussi direct en PHP via array) un support du yaml est prevu

Re: Retour sur le MVC

par mere-teresa » 08 mars 2010, 11:18

Je crois que Symfony prend un F sinon, on parle du logiciel d'IBM

Après, j'
ai peut-être des goût bizarre mais bon, voilà ce qui me déplait (c'est totalement subjectif, je suis d'accord) :
1. YAML et la gestion du SQL, moi j'aime bien faire du SQL en "brute", la classe de ZendFramework m'allait bien (enchainement des requêtes), en plus, je ne veut pas avoir à me soucier des erreurs dans mes méthodes.
2. La gestion des formulaires : je n'ai pas vraiment compris "l'intérêt" de faire un objet pour un formulaire, mais je suis prêt à me laisser convaincre.
3. Alors bon, là ça va être super-contesté, tout est en objet dans Symphony, moi j'aime bien, seulement, je tente de limiter au maximum avec les namespaces.

Pour le 1 : des goûts et des couleurs...Symfony 2.0 revient à des fichiers de confs au choix (XML, YAML, PHP). En Zend Framework, ce sont des fichiers .ini si mes souvenirs sont bons.
2. L'intérêt des formulaires en objets est de bénéficier de l'héritage.
3. L'objet a des avantages et des inconvénients que je ne détaillerais pas ici...tu trouveras une ample documentation sur les sites appropriés.


Pour faire le tour des frameworks, il faut aussi aller voir CodeIgniter et Cake PHP, non ?