Retour sur le MVC

ViPHP
ViPHP | 5462 Messages

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

Mammouth du PHP | 1668 Messages

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
"À ceux qui poursuivent leurs rêves et se spécialisent dans l'impossible" Joseph Kong

10 ans de PHP, déjà.

"moi jtrouve que katagoto il déchire!" Nagol

ViPHP
ViPHP | 5462 Messages

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

Mammouth du PHP | 1668 Messages

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
"À ceux qui poursuivent leurs rêves et se spécialisent dans l'impossible" Joseph Kong

10 ans de PHP, déjà.

"moi jtrouve que katagoto il déchire!" Nagol

ViPHP
ViPHP | 5462 Messages

10 mars 2010, 12:49

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

Mammouth du PHP | 1668 Messages

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.
"À ceux qui poursuivent leurs rêves et se spécialisent dans l'impossible" Joseph Kong

10 ans de PHP, déjà.

"moi jtrouve que katagoto il déchire!" Nagol

Eléphant du PHP | 453 Messages

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 ?
La Tux attitude avec les kiw'z syou plait
Komodo Edit - Inkscape - Dia

Mammouth du PHP | 1668 Messages

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
"À ceux qui poursuivent leurs rêves et se spécialisent dans l'impossible" Joseph Kong

10 ans de PHP, déjà.

"moi jtrouve que katagoto il déchire!" Nagol

Mammouth du PHP | 1668 Messages

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.
"À ceux qui poursuivent leurs rêves et se spécialisent dans l'impossible" Joseph Kong

10 ans de PHP, déjà.

"moi jtrouve que katagoto il déchire!" Nagol