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

 


 Mot :   Pseudo :  
  Aller à la page :
 
 Page :   1  2  3  4  5  ..  47  48  49  ..  62  63  64  65  66  67
Auteur Sujet :

Model View Controller (MVC) - Architecture des applications PHP

n°1787299
Siluro
Posté le 15-09-2008 à 22:00:02  profilanswer
 

Reprise du message précédent :

ratibus a écrit :


C'est-à-dire ?
T'as fait un ticket j'espère :o


j'attends que sur le forum de sf on me confirme que c'est bien un bug et pas une feature :o

mood
Publicité
Posté le 15-09-2008 à 22:00:02  profilanswer
 

n°1787308
Shinuza
This is unexecpected
Posté le 15-09-2008 à 22:10:20  profilanswer
 

Siluro a écrit :


j'attends que sur le forum de sf on me confirme que c'est bien un bug et pas une feature :o

Si ça ne marche pas comme ça devrait c'est un bug :p


---------------
Mains power can kill, and it will hurt the entire time you’re dying from it.
n°1787353
Siluro
Posté le 15-09-2008 à 22:57:43  profilanswer
 

Shinuza a écrit :

Si ça ne marche pas comme ça devrait c'est un bug :p


ouais
bon ok, j'open a ticket sur leur Trac

n°1787372
Siluro
Posté le 15-09-2008 à 23:17:36  profilanswer
 
n°1787435
ratibus
Posté le 16-09-2008 à 08:41:57  profilanswer
 


Link it or it did not happen :o


---------------
Mon blog
n°1787508
Siluro
Posté le 16-09-2008 à 11:15:39  profilanswer
 

ratibus a écrit :


Link it or it did not happen :o


http://trac.symfony-project.org/ticket/4379
wala
il est rapide mister potentier

n°1787542
ratibus
Posté le 16-09-2008 à 11:44:44  profilanswer
 


D'où l'intérêt d'utiliser le trac ;)


---------------
Mon blog
n°1803962
Skateinmar​s
Posté le 24-10-2008 à 11:45:50  profilanswer
 

Codeigniter 1.7 est dehors :o
http://codeigniter.com/user_guide/changelog.html


Message édité par Skateinmars le 24-10-2008 à 11:46:14

---------------
Feedback HAV
n°1804306
-tinost@r-
Revers coupé
Posté le 24-10-2008 à 17:32:21  profilanswer
 

drapal

n°1806171
leflos5
On est ou on est pas :)
Posté le 30-10-2008 à 00:05:44  profilanswer
 

Ca se suce toujours autant ici pour certains  :whistle:
L'autosuffisance tout un programme :o

mood
Publicité
Posté le 30-10-2008 à 00:05:44  profilanswer
 

n°1806301
FlorentG
Posté le 30-10-2008 à 12:18:03  profilanswer
 

Hein ? [:johneh]

n°1806590
Elmoricq
Posté le 30-10-2008 à 20:06:32  profilanswer
 

leflos5 a écrit :

Ca se suce toujours autant ici pour certains  :whistle:
L'autosuffisance tout un programme :o


 
Réponse insultante, sans aucun historique ni rien... tu prendras bien une petite semaine de TT ?

n°1819410
masklinn
í dag viðrar vel til loftárása
Posté le 30-11-2008 à 11:52:51  profilanswer
 

Removing The Model-View-Controller Straitjacket: Malcolm Tredinnick (un des principaux contributeurs de Django) on MVC


---------------
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°1822810
Siluro
Posté le 06-12-2008 à 12:46:04  profilanswer
 

Symfony 1.2  [:kessiah]  
www.symfony-project.org/installation
 
Avec un nouveau tutorial de 24 jours : Jobeet
www.symfony-project.org/jobeet/1_2/en/
 
Miam !

n°1822844
theredled
● REC
Posté le 06-12-2008 à 13:28:51  profilanswer
 

Siluro a écrit :

Symfony 1.2  [:kessiah]  
www.symfony-project.org/installation
 
Avec un nouveau tutorial de 24 jours : Jobeet
www.symfony-project.org/jobeet/1_2/en/
 
Miam !


Tin ya 4 français sur 7 dans leur équipe et ils ont pas été foutus de faire un tuto en français en plus des 5 autres langues [:manust]


---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
n°1823168
theredled
● REC
Posté le 07-12-2008 à 14:07:16  profilanswer
 

La trad française du chap 1 est arrivée [:bien]
 
Mais ils ont du la donner à un stagiaire japonais [:blessure]
 

Citation :

Il est .devenu l'un des plus populaire framework PHP grâce à ses fonctionnalités et sa bonne documentation. Cette grande tradition à commencer dès le début.
(...)
Le défi
C'est vrai, nous le faisons à nouveau.

Message cité 2 fois
Message édité par theredled le 07-12-2008 à 14:11:55

---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
n°1823170
Profil sup​primé
Posté le 07-12-2008 à 14:12:18  answer
 

theredled a écrit :

La trad française du chap 1 est arrivée [:bien]
 
Mais ils ont du la donner à un stagiaire japonais [:blessure]
 

Citation :

Il est .devenu l'un des plus populaire framework PHP grâce à ses fonctionnalités et sa bonne documentation. Cette grande tradition à commencer dès le début.
(...)
Le défi
C'est vrai, nous le faisons à nouveau.




 
 [:bledi51]
 

Citation :


Vous ne pouvez pas les utilise comme bon point de départ


Message édité par Profil supprimé le 07-12-2008 à 14:17:29
n°1823228
Siluro
Posté le 07-12-2008 à 17:21:59  profilanswer
 

[:x-bar]
Dur.

n°1823259
theredled
● REC
Posté le 07-12-2008 à 18:02:56  profilanswer
 

Surtout pour une boite française, ouep.


Message édité par theredled le 07-12-2008 à 18:14:12

---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
n°1823280
ratibus
Posté le 07-12-2008 à 19:21:37  profilanswer
 

theredled a écrit :

La trad française du chap 1 est arrivée [:bien]
 
Mais ils ont du la donner à un stagiaire japonais [:blessure]
 

Citation :

Il est .devenu l'un des plus populaire framework PHP grâce à ses fonctionnalités et sa bonne documentation. Cette grande tradition à commencer dès le début.
(...)
Le défi
C'est vrai, nous le faisons à nouveau.



Trad non officielle ;)


---------------
Mon blog
n°1823283
theredled
● REC
Posté le 07-12-2008 à 19:26:23  profilanswer
 

ratibus a écrit :


Trad non officielle ;)


Comment on fait la diff ? :D


---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
n°1823479
omega2
Posté le 08-12-2008 à 11:26:04  profilanswer
 

theredled a écrit :


Comment on fait la diff ? :D


C'est simple, elle est en français. [:ddr555]

n°1826110
tomsoft
Posté le 12-12-2008 à 14:41:16  profilanswer
 

Voila un bon pathé de code,

 

c'est un ensemble de classes permettant de gerer un album photo,
j'ai essayé de faire une sorte de mvc,
ApercuModel est le model,
ApercuView est la vue,
AlbumPhoto est le controlleur :

 
Code :
  1. <?php
  2.  
  3. /** Album photo php5
  4. *** par thomas nares, tomasdev.fr
  5. ***
  6. *** classe de creation et de gestion des apercus
  7. *** version 0.1, 04/12/2008
  8. */
  9. class ApercuModel {
  10.     
  11.     /* nom du fichier image */
  12.     private $file = null;
  13.  
  14.     /* chemin d'acces à l'image */
  15.     private $path = null;
  16.     
  17.     /* ressource image */
  18.     private $image = null;
  19.     
  20.     /* format de l'image */
  21.     private $format = null;
  22.     
  23.     /* tailles d'origine de l'image */
  24.     private $xOrig = 0;
  25.     private $yOrig = 0;
  26.     
  27.     /* tailles calculées par rapport au ratio de l'image d'origine */
  28.     private $xNew = 0;
  29.     private $yNew = 0;
  30.     
  31.     /* booleen indiquant si l'image est dans le cache de l'album photo, faux par defaut */
  32.     private $cached = false;
  33.     
  34.     /* constantes entieres indiquants le type des images */
  35.     const JPEG = 0;
  36.     const PNG = 1;
  37.     const GIF = 2;
  38.     
  39.     /* constantes entieres pour la qualité des images JPEG */
  40.     const JPEG_QUALITY_HIGH = 100;
  41.     const JPEG_QUALITY_MEDIUM = 75;
  42.     const JPEG_QUALITY_LOW = 50;
  43.     
  44.     /* constantes entieres pour la qualité des images PNG */
  45.     const PNG_QUALITY_HIGH = 0;
  46.     const PNG_QUALITY_MEDIUM = 3;
  47.     const PNG_QUALITY_LOW = 6;
  48.     
  49.     /** constructeur
  50.     * seul l'usage du constructeur est necessaire ici, il se charge d'afficher l'image et de la mettre en cache
  51.     * @param $_file Fichier image
  52.     * @param $_x longueur de l'aperçu
  53.     * @param $_y largeur de l'aperçu
  54.     */
  55.     public function __construct($_path, $_size = 100){
  56.         /* verification de l'existence de l'image */
  57.         if (!file_exists(Config::url_images . $_path))
  58.             throw new IOException("Image inlectable" );
  59.         
  60.         /* affectation aux champs de l'objet */
  61.         $this->path = $_path;
  62.         
  63.         /* definir le nom de l'image */
  64.         $this->getNSetFile();
  65.         
  66.         /* definir le type de l'image */
  67.         $this->getNSetType();
  68.         
  69.         /* definir les dimensions de l'image */
  70.         $this->getNSetDimensions();
  71.     
  72.         /* definir les nouvelles dimensions de l'image */
  73.         $this->getNSetNewDimensions($_size);
  74.         
  75.         /* envoi du header */
  76.         $this->envoiHeader();
  77.         
  78.         /* verification de l'existence de l'apercu */
  79.         /* ou si l'apercu n'est pas depassé */
  80.         if (!file_exists(Config::url_apercus . $_path) || filemtime(Config::url_apercus . $_path) < filemtime(Config::url_images . $_path)){
  81.             /* on dessine l'apercu */
  82.             $this->creerApercu($_size, $_size);
  83.             /* on sauvegarde l'apercu */
  84.             $this->sauvegarderApercu();
  85.         }    
  86.         /* l'apercu existe et n'est pas depassé, on le charge */
  87.         else {
  88.             /* booleen indiquant si l'image est dans le "cache" de l'album photo */
  89.             $this->cached = true;
  90.             /* on charge l'image */
  91.             $this->chargerApercu();
  92.         }
  93.         
  94.         /* on affiche l'aperçu */
  95.         $this->afficherApercu();
  96.     
  97.         /* on libere les ressources */
  98.         $this->__destruct();
  99.     }
  100.     
  101.     /** destructeur privé
  102.     * detruit la ressource image une fois affichée
  103.     */
  104.     private function __destruct(){
  105.         /* si image est une ressource */
  106.         if(is_resource($this->image)){
  107.             /* detruire l'image et cacher l'erreur au cas ou */
  108.             @ImageDestroy($this->image);
  109.         }
  110.     }
  111.     
  112.     /** methode privée de recuperation et d'affectation à l'objet du nom de l'image
  113.     * @return Nom du fichier
  114.     */
  115.     private function getNSetFile(){
  116.         /* on explose $this->path sur '/' */
  117.         $pieces = explode('/', $this->path);
  118.     
  119.         /* si la taille de $pieces est 1, alors on explose sur '\' */
  120.         if (sizeof($pieces) == 1)
  121.             $pieces = explode('\\', $this->path);
  122.         
  123.         /* on recupere la derniere case du tableau */
  124.         $this->file = $pieces[sizeof($pieces) - 1];
  125.         
  126.         /* on retourne ce nom de fichier */
  127.         return $this->file;
  128.     }
  129.     
  130.     /** methode privée de creation de l'aperçu
  131.     * @param $_x longueur souhaitée
  132.     * @param $_y hauteur souhaitée
  133.     */
  134.     private function creerApercu($_x, $_y){
  135.         /* image temporaire */
  136.         $image = null;
  137.         
  138.         /* creation d'une image dans l'objet this */
  139.         $this->image = imagecreatetruecolor($this->xNew, $this->yNew);
  140.         
  141.         /* switch sur le format pour appeler la bonne methode GD et creation de l'image */
  142.         switch($this->format) {
  143.            case self::GIF :
  144.                 /* format gif */
  145.                $image = ImageCreateFromGif(Config::url_images . $this->path);
  146.                break;
  147.            case self::JPEG :
  148.                 /* format jpeg */
  149.                $image = ImageCreateFromJpeg(Config::url_images . $this->path);
  150.                break;
  151.            case self::PNG:
  152.                 /* format png */
  153.                $image = ImageCreateFromPng(Config::url_images . $this->path);
  154.                break;
  155.        }
  156.         
  157.         /* image du fond */
  158.         $image_back = imagecreatetruecolor($_x, $_y);
  159.     
  160.         /* la remplir avec la couleur de fond (gris tres clair #EEEEEE;) */
  161.         imagefilledrectangle($image_back, 0, 0, $_x, $_y, imagecolorallocate($image_back, 0xEE, 0xEE, 0xEE));
  162.     
  163.         /* redimensionnement de l'image et affectation dans l'objet */
  164.         imagecopyresampled($this->image, $image, 0, 0, 0, 0, $this->xNew, $this->yNew, $this->xOrig, $this->yOrig);
  165.         
  166.         /* collage de l'image sur le fond */
  167.         imagecopy($image_back, $this->image, ($_x - $this->xNew) / 2, ($_y - $this->yNew) / 2, 0, 0, $this->xNew, $this->yNew);
  168.     
  169.         /* reaffection dans l'objet */
  170.         $this->image = $image_back;
  171.     }
  172.     
  173.     /** methode privée de determination et d'affection du type de l'image
  174.     * @return Type de l'image
  175.     */
  176.     private function getNSetType(){
  177.         /* pour recuperer le format */
  178.         /* si l'extension est gif ou GIF */
  179.         if(stristr(strtolower(Config::url_images . $this->file),'.gif'))
  180.             $this->format = self::GIF;
  181.        /* si l'extension est jpg ou JPG ou jpeg ou JPEG */
  182.         elseif(stristr(strtolower(Config::url_images . $this->file),'.jpg') || stristr(strtolower(Config::url_images . $this->file),'.jpeg'))
  183.             $this->format = self::JPEG;
  184.        /* si l'extension est png ou PNG */
  185.         elseif(stristr(strtolower(Config::url_images . $this->file),'.png'))
  186.             $this->format = self::PNG;
  187.         /* sinon on lance une IOException */
  188.         else
  189.             throw new IOException("Image inlectable, format inconnu" );
  190.         
  191.         /* retourne le format */
  192.         return $this->format;
  193.     }
  194.     
  195.     /** methode privée de determination et d'affection des dimensions originales
  196.     * @return Tableau de dimensions
  197.     */
  198.     private function getNSetDimensions(){
  199.         /* recuperation des dimensions de l'image */
  200.         $sizes = getimagesize(Config::url_images . $this->path);
  201.         
  202.         /* affectation aux champs de l'objet */
  203.         $this->xOrig = $sizes[0];
  204.         $this->yOrig = $sizes[1];
  205.         
  206.         /* retourne les dimensions sous forme de tableau */
  207.         return array($this->xOrig, $this->yOrig);
  208.     }
  209.     
  210.     /** methode privée de determination et d'affection des nouvelles dimensions
  211.     * algorithme de calcul du ratio expliqué plus bas
  212.     * @return Tableau de dimensions
  213.     */
  214.     private function getNSetNewDimensions($_size){
  215.         
  216.         $this->xNew = $this->yNew = $_size;
  217.         
  218.         /* calcul des ratios */
  219.         /* algo :
  220.         *     si le ratio (L/l) de l'image initiale est superieur au ratio de l'apercu souhaité alors
  221.         *        diviser la hauteur de l'apercu souhaité par le ratio de l'image initiale
  222.         *     sinon
  223.         *        multiplier la longueur de l'apercu souhaité par le ratio de l'image initiale
  224.         */
  225.         if ($this->xOrig / $this->yOrig > 1)
  226.             $this->yNew /= $this->xOrig / $this->yOrig ;
  227.         else
  228.             $this->xNew *= $this->xOrig / $this->yOrig ;
  229.         
  230.         /* retourne les nouvelles dimensions sous forme de tableau */
  231.         return array($this->xNew, $this->yNew);
  232.     }
  233.     
  234.     /** methode privée d'envoi du header pour le navigateur
  235.     */
  236.     private function envoiHeader(){
  237.         /* envoi du header */
  238.         switch($this->format) {
  239.            case self::GIF :
  240.                 /* header type GIF */
  241.                 header("Content-type: image/gif" );
  242.                 break;
  243.            case self::JPEG :
  244.                 /* header type JPEG */
  245.                 header("Content-type: image/jpeg" );
  246.                 break;
  247.            case self::PNG:
  248.                 /* header type PNG */
  249.                 header("Content-type: image/png" );
  250.                 break;
  251.        }
  252.     }
  253.     
  254.     /** methode privée de sauvegarde de l'aperçu dans le dossier aperçu
  255.     */
  256.     private function sauvegarderApercu(){
  257.         /* on crée l'arborescence neccessaire pour accueillir l'apercu */
  258.         $this->construireArborescence();
  259.             
  260.         /* sauvegarde de l'image */
  261.         switch($this->format) {
  262.            case self::GIF :
  263.                 /* image type GIF */
  264.                 imagegif($this->image, Config::url_apercus . $this->path);
  265.                break;
  266.            case self::JPEG :
  267.                 /* image type JPEG */
  268.                 imagejpeg($this->image, Config::url_apercus . $this->path, self::JPEG_QUALITY_MEDIUM);
  269.                break;
  270.            case self::PNG:
  271.                 /* image type PNG */
  272.                 imagepng($this->image, Config::url_apercus . $this->path, self::PNG_QUALITY_MEDIUM);
  273.                break;
  274.        }
  275.     }
  276.     
  277.     /** methode privée qui creer l'arborescence necessaire pour enregistrer l'apercu
  278.     */
  279.     private function construireArborescence(){
  280.         /* on explose $this->path sur '/' */
  281.         $dossiers = explode('/', $this->path);
  282.     
  283.         /* si la taille de $pieces est 1, alors on explose sur '\' */
  284.         if (sizeof($dossiers) == 1)
  285.             $dossiers = explode('\\', $this->path);
  286.         
  287.         /* chaine des dossiers */
  288.         $arbo = Config::url_apercus;
  289.     
  290.         /* si il y a des dossiers alors */
  291.         /* pour chaque dossier */
  292.         if (sizeof($dossiers) > 1) foreach($dossiers as $dossier){
  293.             /* si le dossier actuel n'est pas le fichier lui meme */
  294.             if ($dossier != $this->file){
  295.                 /* concatener l'arborescence avec un '/' et $dossier */
  296.                 $arbo .= $dossier . '/';
  297.                 /* on test si le dossier existe deja */
  298.                 if (!is_dir($arbo)){
  299.                     /* on le crée si necessaire */
  300.                     mkdir($arbo);
  301.                 }
  302.             }
  303.         }
  304.     }
  305.     
  306.     /** methode privée d'affichage de l'image
  307.     */
  308.     private function afficherApercu(){
  309.         /* envoi de l'image */
  310.         switch($this->format) {
  311.            case self::GIF :
  312.                 /* image type GIF */
  313.                 imagegif($this->image, null);
  314.                break;
  315.            case self::JPEG :
  316.                 /* image type JPEG */
  317.                 imagejpeg($this->image, null, self::JPEG_QUALITY_HIGH);
  318.                break;
  319.            case self::PNG :
  320.                 /* image type PNG */
  321.                 imagepng($this->image, null, self::PNG_QUALITY_MEDIUM);
  322.                break;
  323.        }
  324.     }
  325.     
  326.     /** methode privée de chargement de l'aperçu dans l'objet
  327.     */
  328.     private function chargerApercu(){
  329.         /* chargement de l'image */
  330.         switch($this->format) {
  331.            case self::GIF :
  332.                /* image type GIF */
  333.                 $this->image = ImageCreateFromGif(Config::url_apercus . $this->path);
  334.                break;
  335.            case self::JPEG :
  336.                /* image type JPEG */
  337.                 $this->image = ImageCreateFromJpeg(Config::url_apercus . $this->path);
  338.                break;
  339.            case self::PNG:
  340.                /* image type PNG */
  341.                 $this->image = ImageCreateFromPng(Config::url_apercus . $this->path);
  342.                break;
  343.        }
  344.     }
  345. }
  346.  
  347. /** Album photo php5
  348. *** par thomas nares, tomasdev.fr
  349. ***
  350. *** classe de gestion des erreurs liées aux aperçus
  351. *** version 0.1, 04/12/2008
  352. */
  353. class IOException extends Exception {}
  354.  
  355. ?>
 
Code :
  1. <?php
  2.  
  3. require_once(Config::incPath . 'ApercuModel.inc.php');
  4.  
  5. /** Album photo php5
  6. *** par thomas nares, tomasdev.fr
  7. ***
  8. *** classe d'affichage d'un apercu
  9. *** version 0.1, 04/12/2008
  10. */
  11. class ApercuView {
  12.     
  13.     /* adresse de l'image */
  14.     private $path;
  15.  
  16.     /* nom de l'image */
  17.     private $file;
  18.     
  19.     /** contructeur
  20.     * @param $_path chemin d'acces à l'image
  21.     */
  22.     public function __construct($_path){
  23.         /* verification de l'existence de l'image */
  24.         if (!file_exists(Config::url_images . $_path))
  25.             throw new IOException("Image inlectable" );
  26.         
  27.         /* pour verifier le format */
  28.         /* si l'extension n'est pas gif ou GIF, jpg ou JPG, jpeg ou JPEG, png ou PNG on lance une IOException */
  29.         if(!(stristr(strtolower($_path),'.gif') ||
  30.             stristr(strtolower($_path),'.jpg') ||
  31.             stristr(strtolower($_path),'.jpeg') ||
  32.             stristr(strtolower($_path),'.png'))){
  33.             throw new IOException("Image inlectable, format inconnu" );
  34.         }
  35.         
  36.         /* affectation à l'objet */
  37.         $this->path = $_path;
  38.     
  39.         /* affecter le nom de fichier */
  40.         $this->getNSetFile();
  41.         
  42.         /* preparation d'une chaine pour le nom de l'image : */
  43.         $name = $this->file;
  44.         /* si la longueur de la chaine est superieure à 16 ... */
  45.         if (strlen($name) > 16){
  46.             /* ... on la coupe à 16, et on met '...' */
  47.             $name = substr($name, 0, 15) . '...';
  48.         }
  49.     
  50.         /* envoi du code */
  51.         echo '    <div class="apercuView">
  52.                     <a href="' . Config::url_ImageViewer . $_path . '">
  53.                     <img src="' . Config::url_ApercuViewer . $_path . '" width="100" height="100">
  54.                     </a>
  55.                     <div class="apercuInfos">
  56.                         <a href="' . Config::url_ImageViewer . $_path . '">' . $name . '</a>
  57.                     </div>
  58.                     <div class="apercuInfos">
  59.                         ' . $this->getInfos(Config::url_images . $_path) . '
  60.                     </div>
  61.                 </div>';
  62.     }
  63.     
  64.     /** methode permettant d'obtenir les infos sur l'image
  65.     * @return String avec les infos de l'image
  66.     */
  67.     private function getInfos(){
  68.         /* recuperation des tailles */
  69.         $sizes = getimagesize(Config::url_images . $this->path);
  70.     
  71.         /* recuperation du poids */
  72.         $weight = round(filesize(Config::url_images . $this->path) / 1024);
  73.     
  74.         /* fabrication et retournement de la chaine */
  75.         return "$sizes[0] x $sizes[1] px - $weight ko";
  76.     }
  77.  
  78.     /** methode qui retourne le bbcode pour l'apercu
  79.     */
  80.     private function getBBCode(){
  81.         return '[URL=' . Config::url_ImageViewer . $_path . '][IMG]' . Config::url_ApercuViewer . $_path . '[/IMG][/URL]';
  82.     }
  83.     
  84.     /** methode privée de recuperation et d'affectation à l'objet du nom de l'image
  85.     * @return Nom du fichier
  86.     */
  87.     private function getNSetFile(){
  88.         /* on explose $this->path sur '/' */
  89.         $pieces = explode('/', $this->path);
  90.     
  91.         /* si la taille de $pieces est 1, alors on explose sur '\' */
  92.         if (sizeof($pieces) == 1)
  93.             $pieces = explode('\\', $this->path);
  94.         
  95.         /* on recupere la derniere case du tableau */
  96.         $this->file = $pieces[sizeof($pieces) - 1];
  97.         
  98.         /* on retourne ce nom de fichier */
  99.         return $this->file;
  100.     }
  101.     
  102. }
 
Code :
  1. <?php
  2.  
  3. require_once(Config::incPath . 'ApercuView.inc.php');
  4.  
  5. /** Album photo php5
  6. *** par thomas nares, tomasdev.fr
  7. ***
  8. *** classe de creation et de gestion de l'album photo recursif
  9. *** version 0.1, 04/12/2008
  10. */
  11. class AlbumPhoto {
  12.     
  13.     /** constructeur, instancie un nouvel album photo */
  14.     public function __construct($_clean){
  15.         /* si $_clean vaut vrai */
  16.         if ($_clean){
  17.             /* on nettoie le repertoire des apercus */
  18.             self::clean();
  19.         }
  20.         
  21.         /* lance l'affichage recursif de l'album photo */
  22.         self::affiche(Config::url_images, 1);
  23.     }
  24.     
  25.     /** methode privée statique qui efface les apercus calculés
  26.     */
  27.     private static function clean(){
  28.         /* on lance le nettoyage de l'album */
  29.         /* en supprimant le dossier des miniatures */
  30.         exec("rm -r " . Config::albumPath . Config::url_apercus);
  31.         
  32.         /* et en recreant le dossier des apercus */
  33.         exec("mkdir " . Config::albumPath . Config::url_apercus);
  34.     }
  35.  
  36.     /** methode recursive statique d'afffichage des miniatures
  37.     * du dossier $_path donné, au niveau de recursion donné $_level
  38.     * @param $_path le dossier à afficher
  39.     * @param $_level le niveau de recursion
  40.     */
  41.     private static function affiche($_path, $_level){
  42.         
  43.         /* pour chaque fichier ayant comme extension jpg,JPG,jpeg,JPEG,gif,GIF,png ou PNG dans
  44.         * $_path, on instancie un nouvel ApercuView, avec $file en enlevant le premier repertoire
  45.         * qui correspond au repertoire des images */
  46.         foreach (glob("$_path*.{jpg,JPG,jpeg,JPEG,gif,GIF,png,PNG}", GLOB_BRACE) as $file){
  47.             new ApercuView(substr($file, strlen(Config::url_images)));
  48.         }
  49.         
  50.         /* envoi au navigateur d'une div afin de rompre le float : left du css */
  51.         echo '<div class="break"></div>';
  52.     
  53.         /* enfin, pour chaque dossier dans $_path,
  54.         * on lance la recursion sur le dossier */
  55.         foreach (glob("$_path*", GLOB_BRACE) as $file){
  56.             if (is_dir($file)){
  57.                 /* Images de : $file */
  58.                 echo '<div class="lvl' . ($_level + 1) . '">Images de /' . substr($file, strrpos($file, "/" )+1) . '</div>';
  59.                 /* lancer la recursion */
  60.                 self::affiche($file . '/', $level +1);
  61.             }
  62.         }        
  63.     }
  64. }
 

c'est bien du MVC, ou jme suis bien planté ? :d

 

edit : dans l'index.php :

 
Code :
  1. <?php
  2.             require_once("classes/Config.inc.php" );
  3.             require_once(Config::incPath . 'AlbumPhoto.inc.php');
  4.             $clean = false;
  5.             if (isset($_GET['clean']) && $_GET['clean'] == 'true')
  6.                 $clean = true;
  7.             new AlbumPhoto($clean);
  8.         ?>

Message cité 1 fois
Message édité par tomsoft le 12-12-2008 à 14:43:47
n°1826124
skeye
Posté le 12-12-2008 à 14:48:40  profilanswer
 

TIP : tu envoies des headers html et tu fais de l'affichage dans ton model. Devine la réponse à ta question.


---------------
Can't buy what I want because it's free -
n°1826131
tomsoft
Posté le 12-12-2008 à 14:52:42  profilanswer
 

hum, il me faut 2 vues alors ? une vue qui affiche le model, avec le header html, et une autre vue qui affiche ma premiere vue avec la balise <img/> et les dimensions ?

n°1826135
skeye
Posté le 12-12-2008 à 15:02:28  profilanswer
 

Il faut surtout arrêter de se triturer le cerveau pour faire du mvc à tout prix et vouloir faire rentrer tes productions dans des cases...[:moule_bite]

 

Si tu veux absolument faire du pur mvc, tu auras plutôt dans le modèle :
1 classe Image
1 classe AlbumPhoto, qui grosso merdo est une liste d'images.

 

Coté vue, tu auras un objet capable de prendre une instance d'albumPhoto en entrée et d'afficher les images qui sont dedans.

 

Et coté contrôleur, un objet qui va instancier le bon AlbumPhoto pour le refiler à la vue...


Message édité par skeye le 12-12-2008 à 15:02:44

---------------
Can't buy what I want because it's free -
n°1826138
tomsoft
Posté le 12-12-2008 à 15:06:29  profilanswer
 

ok :lol: ca ira comme ca alors :d

n°1826141
theredled
● REC
Posté le 12-12-2008 à 15:10:48  profilanswer
 

Ca veut dire quoi "inlectable" [:dawao] ?


---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
n°1826143
tomsoft
Posté le 12-12-2008 à 15:11:55  profilanswer
 

illisible :d

n°1826146
skeye
Posté le 12-12-2008 à 15:12:44  profilanswer
 

en quelle langue?[:petrus dei]


---------------
Can't buy what I want because it's free -
n°1826148
tomsoft
Posté le 12-12-2008 à 15:14:14  profilanswer
 

en fait c'est un delire, du coup je sais meme plus si ca existe en francais :/

n°1826149
kao98
...
Posté le 12-12-2008 à 15:15:03  profilanswer
 

Non, en français, ça n'existe pas ;)

n°1826156
drasche
Posté le 12-12-2008 à 15:26:28  profilanswer
 

tomsoft a écrit :

Voila un bon pathé de code,  


T'as bossé chez Marconi? [:petrus dei]
 
[:neowen]


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
n°1826163
tomsoft
Posté le 12-12-2008 à 15:33:46  profilanswer
 

c'etait fais expres le h :d

n°1826166
ToYonos
Ready to code
Posté le 12-12-2008 à 15:35:43  profilanswer
 

@tomsoft : A quel moment est instanciée la classe ApercuModel ?


Message édité par ToYonos le 12-12-2008 à 15:36:00

---------------
Marre de perdre du temps à chercher vos sous titres ? | HFR4droid
n°1826173
tomsoft
Posté le 12-12-2008 à 15:37:48  profilanswer
 

dans le script apercuviewer.php, qui affiche une image

 
Code :
  1. <?php
  2.     /* require pour les classes */
  3.     require_once("classes/Config.inc.php" );
  4.     require_once(Config::incPath . "ApercuModel.inc.php" );
  5.     
  6.     if (isset($_GET['p'])){
  7.         /* creation d'un objet apercu */
  8.         new ApercuModel($_GET['p']);
  9.     }        
  10. ?>
 

appelé dans la classe apercuView ici :

 
Code :
  1. /* envoi du code */
  2. echo '    <div class="apercuView">
  3.                    <a href="' . Config::url_ImageViewer . $_path . '">
  4.                    <img src="' . Config::url_ApercuViewer . $_path . '" width="100" height="100">
  5.                    </a>
  6.                    <div class="apercuInfos">
  7.                        <a href="' . Config::url_ImageViewer . $_path . '">' . $name . '</a>
  8.                    </div>
  9.                    <div class="apercuInfos">
  10.                        ' . $this->getInfos(Config::url_images . $_path) . '
  11.                    </div>
  12.                </div>';


Message édité par tomsoft le 12-12-2008 à 15:39:44
n°1826181
ToYonos
Ready to code
Posté le 12-12-2008 à 15:45:46  profilanswer
 

:jap: (j'ai trouvé l'exemple :o -> http://tomasdev.fr/album )

 

En effet, il a qq mélanges entre les composants (surtout le controleur qui fait des echo à la sauvage et la "vue" et le "modèle" qui se partage plus ou moins le boulot de calculer et d'afficher une miniature)

 

edit : en fait ta vue miniature affiche le cadre de présentation de la vignette (nom, infos, liens, etc...) et ton modèle miniature affiche la vignette en elle même (dans ce cas, le client interroge le modele dans passer par ton controleur). En fait c'est pas mal, c'est bien découpé (et vachement commenté :D) mais ce n'est pas du MVC. Comme le dit skeye, il faut pas être obsédé par le terme et parfais pour une appli simple, faire un autre choix de découpage, comme toi


Message édité par ToYonos le 12-12-2008 à 16:13:35

---------------
Marre de perdre du temps à chercher vos sous titres ? | HFR4droid
n°1829750
theredled
● REC
Posté le 20-12-2008 à 00:04:19  profilanswer
 

Salut les pros,
 
Ya un truc spécial dans Sympony/Propel pour gérer les arbres ? (de catégorie, par ex)
Ou faut tout se taper à la main ?
 
Question musmidiaire :
 
Ya un truc spécial dans Sympony/Propel pour gérer des trads ?
Ou faut tout se taper à la main ?


---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
n°1829752
theredled
● REC
Posté le 20-12-2008 à 00:08:27  profilanswer
 

Jme suis planchié de topic en fait, mais merci :o
Je vais me pencher sur toussa, ça a l'air bien.


Message édité par theredled le 20-12-2008 à 00:09:11

---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3  4  5  ..  47  48  49  ..  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)