Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3271 connectés 

 


 Mot :   Pseudo :  
  Aller à la page :
 
 Page :   1  2  3  4  5  ..  56  57  58  ..  62  63  64  65  66  67
Auteur Sujet :

Model View Controller (MVC) - Architecture des applications PHP

n°1965919
theredled
● REC
Posté le 14-02-2010 à 19:44:12  profilanswer
 

Reprise du message précédent :

tomsoft a écrit :


et apres dans la vue /views/accueil.php :

 
Code :
  1. <?php require('header.php'); ?>
  2. <?php require('menu.php'); ?>
  3. <div id="main">
  4.    <?php foreach ($nouveautes as $article){
  5.        echo '<div class="article">' . $article->libelle . ' - ' . $article->prix . '</div>';
  6.    } ?>
  7. </div>
  8. </body>
  9. </html>
 

c'est la bonne voie ?  :D


Si tu fais ça tu vas te répéter tout le temps, et c'est la merde le jour ou tu veux rajouter un module news ou un footer par ex (faut bouger toutes les pages) :o

 

En gros faut plutot faire l'inverse : inclure le contenu des différentes pages à l'intérieur d'un template commun. L'héritage de template de Django (et ZF il me semble) c'est ça, en plus évolué. Symfony 1.x que je connais mieux, c'est ça aussi, avec un seul niveau d'héritage. Ca donne en très gros :

 

main_layout.php

Code :
  1. <html>
  2. <head>
  3. </head>
  4. <body>
  5.  <h1>Mon Super Site</h1>
  6.  <div id="content">
  7.    <?php  echo $content; ?>
  8.  </div>
  9. </body>
  10. </html>
 

+ accueil.php

Code :
  1. <h2>Yo</h2>
  2. <p>Ca déchire</p>
  3. <?php
  4.  foreach ($nouveautes as $article){
  5.    echo '<div class="article">' . $article->libelle . ' - ' . $article->prix . '</div>';
  6.  }
  7. ?>
 

Et c'est le FW qui fait le lien entre les deux.


Message édité par theredled le 14-02-2010 à 19:49:33

---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
mood
Publicité
Posté le 14-02-2010 à 19:44:12  profilanswer
 

n°1965921
tomsoft
Posté le 14-02-2010 à 19:52:28  profilanswer
 

ha oui je vois, sympa ca  :jap:  
je vais creuser par la !

n°1965922
masklinn
í dag viðrar vel til loftárása
Posté le 14-02-2010 à 19:58:10  profilanswer
 

tomsoft a écrit :

ca fonctionne comment en gros ?


En pur PHP je sais pas. Avec django, tu crées des templates avec des blocs dedans, ces blocs sont des trous.
 
base.html:

Code :
  1. <html>
  2.  <head>
  3.    <link href="base.css" rel="stylesheet" />
  4.    <title>My Blog: {% block title %}Generic Page{% endblock %}</title>
  5.    {% block extrahead %}{% endblock %}
  6.  </head>
  7.  <body>
  8.    <div id="header">
  9.      <h1>This is my Django Blog!</h1>
  10.      <ul id="main-nav">
  11.        <li><a href="/">Home</a></li>
  12.        <li><a href="/blog/archives">Archives</a></li>
  13.        <li><a href="/about-me">About Me</a></li>
  14.      </ul>
  15.    </div>
  16.    <div id="content">
  17.      {% block content %}{% endblock %}
  18.    </div>
  19.    <div id="sidebar">
  20.      {% block sidebar %}
  21.        <h3> Blogroll</h3>
  22.        <ul id="blogroll">
  23.          <li><a href="http://somesite.com">Someone's Blog</a></li>
  24.          <li><a href="http://somesite2.com">Someone Else's Blog</a></li>
  25.          <li><a href="http://somesite3.com">Yet Someone's Else's Blog</a></li>
  26.        </ul>
  27.      {% endblock %}
  28.    </div>
  29.  </body>
  30. </html>


 
entry.html (pour chaque article):

Code :
  1. {% extends "base" %}
  2.  
  3. {% block title %}
  4.    {{ entry.title}}
  5. {% endblock %}
  6.  
  7. {% block content %}
  8.    <h2>{{ entry.title}}</h2>
  9.    <h3>By {{ entry.author}}</h3>
  10.    <p>{{ entry.body }}</p>
  11. {% endblock %}


 
Et tu peux hériter en cascade, genre avoir un type d'articles spécialement pour la musique qui vont avoir un look différent:

Code :
  1. {% extends "entry" %}
  2.  
  3. {% block extrahead %}
  4.  <link href="music.css" rel="stylesheet" />
  5. {% endblock %}
  6.  
  7. {% block sidebar %}
  8.  {{ block.super }}
  9.  <h3>What I'm listing to</h3>
  10.  <ul>
  11.    <li><a href="http://bandssite.com">Some great band</a></li>
  12.    <li><a href="http://bandssite2.com">Some other great band</a></li>
  13.  </ul>
  14. {% endblock %}


(dans les templates Django, block.super sert à afficher le contenu du bloc que tu remplaces, son état dans le template parent quoi)


---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
n°1966897
tomsoft
Posté le 17-02-2010 à 14:31:48  profilanswer
 

j'ai procédé comme ceci finalement (c'est ce que je juges le plus simple) :
 
Le fw est donc basé sur un mvc,  
je travailles niveau url comme code igniter, à savoir :
 
http://toto.fr/index.php/Controlle [...] parametre2,  
 
qui avec un htaccess devient  
 
http://toto.fr/Controller/Method/parametre1-parametre2,
 
j'ai aussi une classe Client, qui contient le code html qui sera renvoyé à la fin, et 2-3 methodes genre redirect qui envoit un header pour une redirection)
 
pour charger mes vues, je fais cela :
 

Code :
  1. class Test_Controller {
  2.    public static function index(){
  3.        Client::get()->redirect('Test/addCategForm');
  4.    }
  5.  
  6.    public static function addCategForm(){
  7.        $page = new stdClass();
  8.        $page->title = "Ajouter une categorie";
  9.        $page->content = Client::get()->getView('categorie/form_add.php');
  10.        $page->menu = Client::get()->getView('menu/menu.php');
  11.        Client::get()->loadView('basic_layout.php', $page);
  12.    }
  13. }


 
getView me retourne une string, loadview ne la retourne pas, mais la stocke dans le Client

n°1967213
krifur
Posté le 18-02-2010 à 14:30:44  profilanswer
 


 
Comment tu fais niveau htaccess pour arriver à ça ?
 :jap:  

n°1967216
tomsoft
Posté le 18-02-2010 à 14:34:14  profilanswer
 

Code :
  1. RewriteEngine on
  2. RewriteCond $1 !^(index\.php|img|css|robots\.txt)
  3. RewriteRule ^(.*)$ index.php/$1 [L]


 
c'etait mon premier rewrite, il est peut etre buggé, mais piur l'instant il marche :jap:

n°1967335
krifur
Posté le 18-02-2010 à 18:53:28  profilanswer
 

merci, j'essaye de faire ça depuis un paquet de temps...

n°1967339
theredled
● REC
Posté le 18-02-2010 à 19:08:33  profilanswer
 

tomsoft a écrit :

Code :
  1. RewriteRule ^(.*)$ index.php/$1 [L]



Ca sert à rien ça, si ? :D
 
(par rapport à RewriteRule ^(.*)$ index.php)


Message édité par theredled le 18-02-2010 à 19:08:58

---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
n°1967342
tomsoft
Posté le 18-02-2010 à 19:15:52  profilanswer
 

jsais pas, pas testé, j'ai juste +/- suivi un tuto :d

n°1967346
theredled
● REC
Posté le 18-02-2010 à 19:30:34  profilanswer
 

tomsoft a écrit :

jsais pas, pas testé, j'ai juste +/- suivi un tuto :d


Bon ben je le dis, ça sert à rien :o Ce qui suit index.php ne sera pas interprêté.
 
Sinon tu peux rajouter un RewriteCond

Code :
  1. RewriteCond %{REQUEST_FILENAME} !-f


Ca te permettra d'accéder directement à tout ce qui est un fichier existant (par ex /blabla.php, /dev/hop.jpg)

Message cité 1 fois
Message édité par theredled le 18-02-2010 à 19:30:47

---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
mood
Publicité
Posté le 18-02-2010 à 19:30:34  profilanswer
 

n°1967349
tomsoft
Posté le 18-02-2010 à 19:45:15  profilanswer
 

ha oui ca m'interesse ca :d
merci ;)
mais du coup, le premier cond sert plus à rien non ?

n°1967350
theredled
● REC
Posté le 18-02-2010 à 19:51:48  profilanswer
 

tomsoft a écrit :

ha oui ca m'interesse ca :d
merci ;)
mais du coup, le premier cond sert plus à rien non ?


Si, par ex si l'URL d'une image est foireuse (l'image existe pas), ça évite que ça passe par le FW.
 
Et si tu le gardes en 1ère position, ça filtre direct les img/, sans avoir besoin de faire de vraie vérif FS, qui être lente. Enfin ça c'est p-e négligeable, je sais pas.


Message édité par theredled le 18-02-2010 à 19:52:54

---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
n°1967352
tomsoft
Posté le 18-02-2010 à 19:55:30  profilanswer
 

ouais c'est pas bete, en gros pour ma verif je fais :
 

Code :
  1. /* si aucun parametre > front controlleur */
  2.    if(!isset($_SERVER['PATH_INFO']) || $_SERVER['PATH_INFO'] == '/'){
  3.        $request = $eco->frontController;
  4.    } else {
  5.        $request = substr($_SERVER['PATH_INFO'], 1);
  6.    }
  7.  
  8.    $purl = explode('/', $request);
  9.    
  10.    /* appel du controlleur puis de la methode avec parametre */
  11.    /* check de l'existence du controlleur et de la methode : */
  12.    if (controller_exists($purl[0])){
  13.        require_once(SPATH . 'controllers/' . $purl[0] . '.php');
  14.        $ctl = $purl[0] . '_Controller';
  15.        if ((!isset($purl[1]) || $purl[1] == '') && method_exists($ctl, 'index')){
  16.            /* appel de la methode */
  17.            eval($ctl . '::index();');
  18.        }
  19.        else if (method_exists($ctl, $purl[1])){
  20.            /* reconstruire les "/" si jms */
  21.            if (sizeof($purl) > 3){
  22.                for($i = 3; $i < sizeof($purl); $i++){
  23.                    $purl[2] .= '/' . $purl[$i];
  24.                }
  25.            }
  26.  
  27.            /* appel de la methode */
  28.            eval($ctl . '::' . $purl[1] . '("' . (isset($purl[2]) ? $purl[2] : '') . '" );');
  29.        }
  30.        else {
  31.            LWClient::get()->error("Acces interdit" );
  32.        }
  33.    } else { LWClient::get()->error("Page introuvable" ); }
  34.  
  35.    /* rendu : */
  36.    LWClient::get()->render();


 
vous y voyez des failles ? :d

n°1967354
theredled
● REC
Posté le 18-02-2010 à 20:05:40  profilanswer
 

tomsoft a écrit :

ouais c'est pas bete, en gros pour ma verif je fais :
 

Code :
  1.  


 
vous y voyez des failles ? :d


Je parlais de vérif "FS" comme "File System", là c'est un routing que tu fais :o
 
Sinon oui ya de belles failles  
http://tonsite/yop/dothis/" ); unlink("index.php" ); echo ("
 
N'utilise jamais eval(). Pour ça, et aussi parce que c'est illisible.


Message édité par theredled le 18-02-2010 à 20:11:21

---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
n°1967357
tomsoft
Posté le 18-02-2010 à 20:11:50  profilanswer
 

tu penses à quoi pour eviter l'eval ?

n°1967359
theredled
● REC
Posté le 18-02-2010 à 20:17:26  profilanswer
 

Code :
  1. $ctl::index();


pour le premier et  

Code :
  1. call_user_func_array(array($ctl, $purl[1]), $params);


pour l'autre par ex
 
Mais c'est pas encore génial, notament tu n'autorises qu'un paramètre ($purl[2]) ??


Message édité par theredled le 18-02-2010 à 20:19:15

---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
n°1967360
tomsoft
Posté le 18-02-2010 à 20:24:30  profilanswer
 

en fait j'envois les autres parametres concatenés dans purl[2] :sweat:

 

je vois voir pour en envoyer plusieurs ;)
merci ;)


Message édité par tomsoft le 18-02-2010 à 20:24:38
n°1967361
theredled
● REC
Posté le 18-02-2010 à 20:34:26  profilanswer
 

sinon
 

Code :
  1. !isset($purl[1]) || $purl[1] == ''


==

Code :
  1. empty($purl[1])



---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
n°1967362
tomsoft
Posté le 18-02-2010 à 20:39:22  profilanswer
 

je savais pas que empty verifiait aussi le isset :love:

n°1967373
MEI
|DarthPingoo(tm)|
Posté le 18-02-2010 à 21:24:52  profilanswer
 

tomsoft a écrit :

tu penses à quoi pour eviter l'eval ?


A priori, une des bonnes solutions c'est d'utiliser __call, comme fait Zend Framework.


---------------
| AMD Ryzen 7 7700X 8C/16T @ 4.5-5.4GHz - 64GB DDR5-6000 30-40-40 1T - AMD Radeon RX 7900 XTX 24GB @ 2680MHz/20Gbps |
n°1967374
theredled
● REC
Posté le 18-02-2010 à 21:25:32  profilanswer
 

MEI a écrit :


A priori, une des bonnes solutions c'est d'utiliser __call, comme fait Zend Framework.


C'est pas parce que ZF le fait que c'est une bonne solution [:dawao]
D'ailleurs je vois pas bien en quoi ça remplacerait l'eval ?

Message cité 2 fois
Message édité par theredled le 18-02-2010 à 21:26:29

---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
n°1967375
MEI
|DarthPingoo(tm)|
Posté le 18-02-2010 à 21:28:23  profilanswer
 

theredled a écrit :


Bon ben je le dis, ça sert à rien :o Ce qui suit index.php ne sera pas interprêté.
 
Sinon tu peux rajouter un RewriteCond

Code :
  1. RewriteCond %{REQUEST_FILENAME} !-f


Ca te permettra d'accéder directement à tout ce qui est un fichier existant (par ex /blabla.php, /dev/hop.jpg)


RewriteCond %{REQUEST_FILENAME} !-d aussi pour les sous dossiers,
 
Et un truc du genre RewriteRule !\.(js|ico|txt|gif|jpg|png|css)$ index.php pour les fichiers de ressources.
 
De ce que j'ai benché avec le Zend Framework, une ressources servis par Apache c'est dans les 15ms là ou via Zend Framework, et lu sur l'HDD puis renvoyé en PHP ca mettrait dans les 100ms...

Message cité 1 fois
Message édité par MEI le 18-02-2010 à 21:28:34

---------------
| AMD Ryzen 7 7700X 8C/16T @ 4.5-5.4GHz - 64GB DDR5-6000 30-40-40 1T - AMD Radeon RX 7900 XTX 24GB @ 2680MHz/20Gbps |
n°1967377
theredled
● REC
Posté le 18-02-2010 à 21:34:39  profilanswer
 

MEI a écrit :


RewriteCond %{REQUEST_FILENAME} !-d aussi pour les sous dossiers,
 
Et un truc du genre RewriteRule !\.(js|ico|txt|gif|jpg|png|css)$ index.php pour les fichiers de ressources.
 
De ce que j'ai benché avec le Zend Framework, une ressources servis par Apache c'est dans les 15ms là ou via Zend Framework, et lu sur l'HDD puis renvoyé en PHP ca mettrait dans les 100ms...


Tu veux dire, 100ms en ne passant que par le htaccess, juste à cause de la vérif d'existence du fichier ?


---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
n°1967378
MEI
|DarthPingoo(tm)|
Posté le 18-02-2010 à 21:40:20  profilanswer
 

theredled a écrit :


C'est pas parce que ZF le fait que c'est une bonne solution [:dawao]
D'ailleurs je vois pas bien en quoi ça remplacerait l'eval ?


Sans entrer dans la polémique, les solutions employés dans le ZF sont toujours une sources fiables, pas forcement le plus performant, mais au minimum un gage de "portabilité" avec les futures versions et de fiabilité.


---------------
| AMD Ryzen 7 7700X 8C/16T @ 4.5-5.4GHz - 64GB DDR5-6000 30-40-40 1T - AMD Radeon RX 7900 XTX 24GB @ 2680MHz/20Gbps |
n°1967381
MEI
|DarthPingoo(tm)|
Posté le 18-02-2010 à 21:45:04  profilanswer
 

theredled a écrit :


Tu veux dire, 100ms en ne passant que par le htaccess, juste à cause de la vérif d'existence du fichier ?


Non 15ms via Apache y compris le .htaccess (ça ne coute rien je pense quasiment), 100ms c'est en fait en passant par tout le MVC du Zend Framework, via un Plugin de controlleur qui va chercher le fichier sur le disque dans une zone non accessible a Apache, détecter le MIME type, calculer l'Etag et les Header pour le cache, et bien sur streamer le fichier ensuite.
 
En fait le but était de partager des ressources entres deux "modules" de l'application qui aurai un répertoire public distinct mais le même code. Mais vu les perfs on a abandonné l'idée. Donc en gros "aiguiller" que les bonnes requetes vers le framework MVC au plus tôt dès le .htaccess reste le plus performant.
 
Après c'est clair que le ZF c'est quand même lourd, mais bon le résultat sera sans doute pareil, Apache reste beaucoup plus rapide.


---------------
| AMD Ryzen 7 7700X 8C/16T @ 4.5-5.4GHz - 64GB DDR5-6000 30-40-40 1T - AMD Radeon RX 7900 XTX 24GB @ 2680MHz/20Gbps |
n°1967382
MEI
|DarthPingoo(tm)|
Posté le 18-02-2010 à 21:49:37  profilanswer
 

tomsoft a écrit :

ouais c'est pas bete, en gros pour ma verif je fais :
 

Code :
  1. /* si aucun parametre > front controlleur */
  2.    if(!isset($_SERVER['PATH_INFO']) || $_SERVER['PATH_INFO'] == '/'){
  3.        $request = $eco->frontController;
  4.    } else {
  5.        $request = substr($_SERVER['PATH_INFO'], 1);
  6.    }
  7.  
  8.    $purl = explode('/', $request);
  9.    
  10.    /* appel du controlleur puis de la methode avec parametre */
  11.    /* check de l'existence du controlleur et de la methode : */
  12.    if (controller_exists($purl[0])){
  13.        require_once(SPATH . 'controllers/' . $purl[0] . '.php');
  14.        $ctl = $purl[0] . '_Controller';
  15.        if ((!isset($purl[1]) || $purl[1] == '') && method_exists($ctl, 'index')){
  16.            /* appel de la methode */
  17.            eval($ctl . '::index();');
  18.        }
  19.        else if (method_exists($ctl, $purl[1])){
  20.            /* reconstruire les "/" si jms */
  21.            if (sizeof($purl) > 3){
  22.                for($i = 3; $i < sizeof($purl); $i++){
  23.                    $purl[2] .= '/' . $purl[$i];
  24.                }
  25.            }
  26.  
  27.            /* appel de la methode */
  28.            eval($ctl . '::' . $purl[1] . '("' . (isset($purl[2]) ? $purl[2] : '') . '" );');
  29.        }
  30.        else {
  31.            LWClient::get()->error("Acces interdit" );
  32.        }
  33.    } else { LWClient::get()->error("Page introuvable" ); }
  34.  
  35.    /* rendu : */
  36.    LWClient::get()->render();


 
vous y voyez des failles ? :d


 
Je suis sans doute vieux jeux, mais le principe en appli web MVC c'est de TOUJOURS passer vers le Front Controller, c'est lui qui aiguile. Alors que là si j'ai bien compris pour toi le front controller c'est plus l'"IndexController". Bon c'est un peu pinailler, mais un peu de clarté aide toujours.


---------------
| AMD Ryzen 7 7700X 8C/16T @ 4.5-5.4GHz - 64GB DDR5-6000 30-40-40 1T - AMD Radeon RX 7900 XTX 24GB @ 2680MHz/20Gbps |
n°1967384
tomsoft
Posté le 18-02-2010 à 21:55:28  profilanswer
 

oui c'est vrai :jap: dans le fonctionnement c'est ca, mon index.php est mon frontController,  
 
il faut juste que je renomme mon frontController en indexController :jap:

n°1967388
MEI
|DarthPingoo(tm)|
Posté le 18-02-2010 à 22:05:34  profilanswer
 

theredled a écrit :


C'est pas parce que ZF le fait que c'est une bonne solution [:dawao]
D'ailleurs je vois pas bien en quoi ça remplacerait l'eval ?


 
Au sujet de l'eval.
 
Voila comment je vois le processus :
.htaccess -> index.php
index.php init. le MVC et passe les param -> FrontController
FrontController analyse l'URL. Il ressort 4 informations principales :
- module
- controlleur
- action
- paramètres.
 
Il check physiquement si la classe existe. Le plus simple c'est d'utilise le principe de "Convention over Configuration". De là avec l'autoloader on s'en sort facilement, un code de ce genre peut suffire :

Code :
  1. try {
  2.    require_once($request->getControllerName());
  3. } catch (Exception $e) {
  4.    throw new Exception("Controller not found." );
  5. }


Si on choisi d'utiliser la notion de module, suffit de checker si la classe de Module existe par après, etc. Bref ca c'est du routage de base.
 
Après pour l'action, on fait une classe abstraite pour le controlleur afin dans la construction recup. la requete via le front controller (qui tire avantage a être un singleton).
 
Et du front controller :

Code :
  1. public function dispatch($controller, $action) { // $controller, et $action sont calculé avant dans le front controller via la requete
  2.    // test ici si le controlleur existe. auparavant
  3.    ...
  4.    //
  5.    $controllerInstance = new $controller();
  6.    $controllerInstance->$action();
  7. }



---------------
| AMD Ryzen 7 7700X 8C/16T @ 4.5-5.4GHz - 64GB DDR5-6000 30-40-40 1T - AMD Radeon RX 7900 XTX 24GB @ 2680MHz/20Gbps |
n°1972667
theredled
● REC
Posté le 10-03-2010 à 15:12:04  profilanswer
 

Le modèle qui balance des événements ("commande validée", "nouvel user crée" ), c'est bien ou c'est mal ?


---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
n°1972670
FlorentG
Posté le 10-03-2010 à 15:20:01  profilanswer
 

Tu les balances comment tes évènements [:petrus dei]

n°1972672
theredled
● REC
Posté le 10-03-2010 à 15:27:02  profilanswer
 

En appelant l'event dispatcher de l'appli via un objet "contexte" en singleton [:dawao]

 

après je peux le passer en param si vous préférez [:thalis]

Message cité 1 fois
Message édité par theredled le 10-03-2010 à 15:45:00

---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
n°1972685
theredled
● REC
Posté le 10-03-2010 à 16:04:39  profilanswer
 

Bon bah ça doit pas être si terrible vu les non-réactions [:dawao]


---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
n°1972801
FlorentG
Posté le 10-03-2010 à 21:47:11  profilanswer
 

theredled a écrit :

En appelant l'event dispatcher de l'appli via un objet "contexte" en singleton [:dawao]


J'avais aussi un contexte en singleton à une époque. Mais j'étais jeune et fou [:petrus75]

n°1972804
Profil sup​primé
Posté le 10-03-2010 à 21:59:47  answer
 

Question qui va peut-être me faire passer pour le pire des noobs mais j'assume  [:petrus75]  
 
Est-ce qu'une structure MVC passe forcément par la POO ou est-ce que je peux m'en passer ? En utilisant juste des fonctions ?

n°1972807
FlorentG
Posté le 10-03-2010 à 22:01:33  profilanswer
 

Dans l'absolu, et si t'es un peu fou, tu peux même te passer de fonctions :D
 
Mais non, pas forcément besoin de POO. Maintenant certains trucs peuvent être un peu plus lourdingues à faire

n°1972808
Profil sup​primé
Posté le 10-03-2010 à 22:03:34  answer
 

Disons que j'aimerai recoder entièrement une application que j'ai codé en utilisant MVC. Mais comme je débute encore en POO, je voulais savoir si je pouvais débuter sans.

n°1972842
skeye
Posté le 11-03-2010 à 07:59:08  profilanswer
 


ça me semble une bonne idée de commencer par te mettre à la POO, si tu ne maitrises pas déjà les concepts.:o


---------------
Can't buy what I want because it's free -
n°1972886
theredled
● REC
Posté le 11-03-2010 à 10:33:58  profilanswer
 

FlorentG a écrit :


J'avais aussi un contexte en singleton à une époque. Mais j'étais jeune et fou [:petrus75]


C'est pas un vrai singleton, et dans tous les cas c'est la faute à M. Symfony 1 :o
 
Mais j'aimerais quand même bien savoir la position de la théorie par rapport à ça (envoyer des events à partir du modèle), bien, mal, bien si c'est fait comme ça, mal si c'est fait comme ça.


---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
n°1972890
MEI
|DarthPingoo(tm)|
Posté le 11-03-2010 à 10:40:20  profilanswer
 

theredled a écrit :


C'est pas un vrai singleton, et dans tous les cas c'est la faute à M. Symfony 1 :o
 
Mais j'aimerais quand même bien savoir la position de la théorie par rapport à ça (envoyer des events à partir du modèle), bien, mal, bien si c'est fait comme ça, mal si c'est fait comme ça.


Je vois pas trop dans quel cas tu veux envoyer un évènement. :??:
 
 
 
 


---------------
| AMD Ryzen 7 7700X 8C/16T @ 4.5-5.4GHz - 64GB DDR5-6000 30-40-40 1T - AMD Radeon RX 7900 XTX 24GB @ 2680MHz/20Gbps |
n°1972896
theredled
● REC
Posté le 11-03-2010 à 10:45:57  profilanswer
 

MEI a écrit :


Je vois pas trop dans quel cas tu veux envoyer un évènement. :??:


"commande validée", "nouvel user créé"


---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
n°1972898
masklinn
í dag viðrar vel til loftárása
Posté le 11-03-2010 à 10:51:26  profilanswer
 

MEI a écrit :

Je vois pas trop dans quel cas tu veux envoyer un évènement. :??:


http://docs.djangoproject.com/en/dev/topics/signals/

 

Pour n'importe quel opération sur laquelle quelqu'un d'autre voudrait se hooker, ça correspond à des triggers sql et ça permet d'implémenter facilement des réactions à des actions émises par une section complètement différente du code, en gardant la dite section sans aucune connaissance de ce que tu fais.


Message édité par masklinn le 11-03-2010 à 10:52:21

---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3  4  5  ..  56  57  58  ..  62  63  64  65  66  67

Aller à :
Ajouter une réponse
 

Sujets relatifs
Comment créer une architecture propre et fonctionelle...[Débutant] Webdesigner a besoin d'aide pour PHP
script PHP style explorateur windowsPHP et MS SQL
[PHP] envoi d'images qui se dimentionne et s'ajoute direct sur 1pageAfficher le temps utilisé pour générer une page PHP
[PHP] connexion bdd différente selon page locale ou sur serveur ?Afficher une image générée par un script PHP dans un PDF ?
Utilisation d'une variable en Flash depuis PHPErreur de forum PHP
Plus de sujets relatifs à : Model View Controller (MVC) - Architecture des applications PHP


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)