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

 


 Mot :   Pseudo :  
  Aller à la page :
 
 Page :   1  2  3  4  5  ..  34  35  36  ..  62  63  64  65  66  67
Auteur Sujet :

Model View Controller (MVC) - Architecture des applications PHP

n°1635874
leflos5
On est ou on est pas :)
Posté le 03-11-2007 à 00:37:41  profilanswer
 

Reprise du message précédent :

masklinn a écrit :


Et t'as jamais songé à apprendre l'anglais?


Et toi, avec le français t'en es où? Où ai je dis que je ne comprenais rien à l'anglais? Je le lis largement courement pour une doc, là n'est pas le soucis :)

masklinn a écrit :


Perso je fais de l'anglais parce que c'est la langue officielle de l'informatique. Point barre, fin de la discussion.


Je suis d'accord que c'est la langue majoritaire, je trouve dommage que ça soit une excuse pour faire du tout anglais pour le principe ou par pseudo convention unilatérale :spamafote:
 
Si tu bosses pour un francophone, avec des partenaires francophones, pour un usage purement francophone, je vois pas bien l'intéret de partir sur de l'anglophone pour le plaisir de pénaliser tout le monde dans la compréhension globale et instantané d'éventuels intervenants qui seraient limite en anglais :)  
 

masklinn a écrit :


Surtout quand les langages de prog sont en grande majorité basés sur l'anglais.


Il dit qu'il voit pas le rapport... Que le langage soit dans une langue empêche de donner des nom de fonction dans une autre? De faire des commentaires dans une autre langue?
 
Me sors pas l'universalité, mais, pourquoi choisir une langue plutot qu'une autre? Pourquoi toujours les mêmes doivent faire l'effort de comprendre et pas l'inverse? C'est pas comme si le français était aussi peu maitrisé que le polonais...
 
 
Enfin peut importe, mais c'est dommage pour la francophonie votre comportement assez sectaire ou soumis, au choix :whistle:

mood
Publicité
Posté le 03-11-2007 à 00:37:41  profilanswer
 

n°1635907
SekYo
Posté le 03-11-2007 à 01:02:13  profilanswer
 

leflos5 a écrit :

Si tu bosses pour un francophone, avec des partenaires francophones, pour un usage purement francophone, je vois pas bien l'intéret de partir sur de l'anglophone pour le plaisir de pénaliser tout le monde dans la compréhension globale et instantané d'éventuels intervenants qui seraient limite en anglais :)


J'avoue que je comprend pas bien ce paragraphe. On parle de pas maitriser l'anglais pour faire une dissertation, un exposé ou même soutenir une conversation courante, on parle d'avoir un niveau d'anglais technique, dans un domaine limité, suffisant pour programmer. Je comprend pas comment on peut se dire développeur sans avoir ce minimum de niveau :o J'sais pas, c'est comme quelqu'un qui me dise qu'il fait de la voile sans savoir ce qu'est un foc a part en lui disant "la ptite voile à l'avant du bateau".

n°1635948
FlorentG
Unité de Masse
Posté le 03-11-2007 à 09:15:37  profilanswer
 

j_lecruel a écrit :

Là où je trouve pas ça forcément génial par rapport à MVC, c'est que les données sont récupérées directement par l'objet Form et non par le Controller. En même temps cela évite de se taper les récupération de données pour chaque formulaire.


Ca c'est un peu moins grave. Moi le validator s'occupe de normaliser les données aussi.

n°1636151
leflos5
On est ou on est pas :)
Posté le 03-11-2007 à 19:54:59  profilanswer
 

Comment faire lourd pour pas grand chose...
 
A ce moment suffit de définir chaque entrée avec le filtre en regexp et voilà. Faire de l'objet pour avoir un nième niveau d'abstraction (n>35 ...) ça commence à devenir mal conçu sous couvert justement de super modélisation de la mort qui tue (le serveur surtout :D )

n°1636153
masklinn
í dag viðrar vel til loftárása
Posté le 03-11-2007 à 20:03:35  profilanswer
 


Ouais mais là c'est plus vraiment une fluent interface [:pingouino]
 
Bof


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1636159
masklinn
í dag viðrar vel til loftárása
Posté le 03-11-2007 à 20:22:16  profilanswer
 


C'est juste que tout le monde a pas la même approche de la POO, et perso avoir des arbos d'objets géantes ça me rappelle trop java [:dawa]

 

Donc je préfère les chaînages de méthodes, avec des créations d'objets uniquement pour gagner de la place ou quand un truc s'y prète bien (genre un champ de formulaire c'est self-contained, il a pas besoin d'infos extérieures. Par contre avec des objets contraintes tu vas avoir besoin que tes contraintes manipulationnent les objets qui les contiennent, chuis pas fan)

 

(par contre l'avantage d'avoir des objets contrainte externes c'est à la limite qu'il est possible de créer des types de contraintes sans toucher au formulaire)

 

(enfin bon ya quand même certaines contraintes qui ont pas beaucoup de sens en externe je trouve)

Message cité 1 fois
Message édité par masklinn le 03-11-2007 à 20:28:06

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1636160
FlorentG
Unité de Masse
Posté le 03-11-2007 à 20:23:20  profilanswer
 


C'est exactement ce que je voulais pas faire :D Un machin avec tout plein d'objets...

n°1636744
el muchach​o
Comfortably Numb
Posté le 05-11-2007 à 11:43:09  profilanswer
 

Un passage rapide ici pour signaler que l'outil de modélisation UML Bouml peut maintenant générer et faire du reverse de PHP. Attention, il ne gère pas le "round-trip" à savoir le cycle génération-reverse. Le reverse est récent, donc ne pas s'attendre à des miracles, mais a été testé sur le code du CMS Joomla 1.5.
http://bouml.free.fr/doc/index_phpreverse.html


Message édité par el muchacho le 05-11-2007 à 11:46:22

---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
n°1636785
Shinuza
This is unexecpected
Posté le 05-11-2007 à 12:46:59  profilanswer
 

leflos5 a écrit :


Il dit qu'il voit pas le rapport... Que le langage soit dans une langue empêche de donner des nom de fonction dans une autre? De faire des commentaires dans une autre langue?
 
Me sors pas l'universalité, mais, pourquoi choisir une langue plutot qu'une autre? Pourquoi toujours les mêmes doivent faire l'effort de comprendre et pas l'inverse? C'est pas comme si le français était aussi peu maitrisé que le polonais...
 
 
Enfin peut importe, mais c'est dommage pour la francophonie votre comportement assez sectaire ou soumis, au choix :whistle:


Il dit que t'auras fatalement de l'Anglais dans ton code, qui veut dire que le mec en face, quand bien même francophone, bitte un minimum l'Anglais.
Il dit que finalement tu vas mélanger deux langues alors que par soucis d'uniformité beaucoup préferont une grammaire composée d'une seule langue histoire de garder une cohérence entre le langage de prog et la valeur sémantique du code applicatif.


---------------
Mains power can kill, and it will hurt the entire time you’re dying from it.
n°1636989
leflos5
On est ou on est pas :)
Posté le 05-11-2007 à 17:06:54  profilanswer
 

Ca se tient :whistle:
 
Il nous faudrait un php version française alors :D

mood
Publicité
Posté le 05-11-2007 à 17:06:54  profilanswer
 

n°1637017
masklinn
í dag viðrar vel til loftárása
Posté le 05-11-2007 à 17:37:42  profilanswer
 

leflos5 a écrit :

Ca se tient :whistle:
 
Il nous faudrait un php version française alors :D


IL EXISTE [:dawa]
 
http://www.pcsoft.fr/webdev/index.html
 
ENJOY YOUR PIECE OF CRAP [:dawa]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1637023
omega2
Posté le 05-11-2007 à 17:45:45  profilanswer
 

webdev, c'est pas du php, c'est bien pire.

n°1639979
supermofo
Hello World !
Posté le 09-11-2007 à 12:25:24  profilanswer
 

[quotemsg=1636160,1368,208403]

 

Hmm apres reflexion je trouve que fluent interface pour un formulaire ca convient pas du tout ...

 

1-  

Code :
  1. $form->Add(new Text('textfield')
  2.          ->addConstraint(new LengthConstraint(10,20))
  3.          ->addConstraint(new RequiredConstraint()))
 

Trop complique pour le peu d'action realisee : un Text est element de form, les contraintes sont composee dans form.

 

$form->Add(new FormElement) devrait pouvoir ajouter un tableau de FormElement, et FormElement devrait etre declinable en plusieurs sous-classes (XMLElements, INIelements ..).

 

Au lieu de 50 milles XXXConstraints, une reference a un objet Validator dans form, et un callback du genre add_rule((array)$params)

 

Pour le coup de grace, il faudrait que 'RequiredConstraint' puisse renvoyer une sorte de feedback. Ton feedback devrait etre pouvoir facilement manipulable et traductible.

 

Tout ca pour dire que fluent interface n'est pas candidat pour gerer les formulaires.

 

Bon :)


Message édité par supermofo le 09-11-2007 à 16:43:07

---------------
Echange de 3000+ liens PR 3 -> 5, me pm urgent !
n°1640857
leflos5
On est ou on est pas :)
Posté le 11-11-2007 à 11:31:30  profilanswer
 

masklinn a écrit :


IL EXISTE [:dawa]
 
http://www.pcsoft.fr/webdev/index.html
 
ENJOY YOUR PIECE OF CRAP [:dawa]


:eek:
 
Je l'avais oublié celui là  :lol:

n°1647649
FlorentG
Unité de Masse
Posté le 22-11-2007 à 21:11:34  profilanswer
 

[:reddit] Un truc intéressant à lire : Interactive Application Architecture Patterns

n°1647921
math2k
Posté le 23-11-2007 à 14:30:26  profilanswer
 

Ouaissssss du MVC!
 
Je suis sur un nouveau projet pour le moment .. je pensais utiliser le framework Zend pour ses Controllers et ses Views, et Doctrine comme Model (ORM).
 
Certains d'entre vous ont deja utilisé ces outils ? des avis ?

n°1647946
omega2
Posté le 23-11-2007 à 14:55:46  profilanswer
 

math2k > J'utilise le zend framework mais pas la partie "Views&Controllers" vu que j'avais déjà fait quelque chose de mon côté. Ceci dit, il y a des trucs bien fait dans ce framework (l'abstraction base de donnée par exemple) même s'il faut parfois fouiller la documentation (voire le code si on ne comprend pas la doc) pour arriver à faire certains trucs.
 
Personnellement, je suis assez content de ce framework même si je suis loin de l'utiliser au maximum de ses capacités.

n°1647956
math2k
Posté le 23-11-2007 à 14:59:51  profilanswer
 

Justement pour l'abstraction je comptais utiliser une autre lib : http://doctrine.pengus.net/
 
Je pense pas que Zend fasse du ORM complet hélàs ..

n°1647969
ratibus
Posté le 23-11-2007 à 15:13:39  profilanswer
 

A l'heure actuelle Doctrine est le meilleur ORM à utiliser ;)

n°1648004
omega2
Posté le 23-11-2007 à 15:44:15  profilanswer
 

math2k a écrit :

Justement pour l'abstraction je comptais utiliser une autre lib : http://doctrine.pengus.net/
 
Je pense pas que Zend fasse du ORM complet hélàs ..

C'est vrai qu'a ma connaissance il se limite encore à une seule table par objet (il ne gère pas de lui même les relations entre les tables)
 
Ce que je voulais dire, ce n'est pas qu'il faut que tu l'utilises comme framework ORM mais que même si tu ne fais pas tout grâce au zend framework, tu y trouveras surement ton bonheur d'une manière ou d'une autre.

n°1648012
Shinuza
This is unexecpected
Posté le 23-11-2007 à 15:51:47  profilanswer
 

[HS]
On parlait d'écrire dans sa langue y'a pas si longtemps, bah, c'est, comment dire :
 

Code :
  1. var arrRetorn = new Array();
  2.     var intRetorn = 0;
  3.     var bolLHiHaConcordancia;
  4.     var strCondicioInterna = interpretaWhere (strLCondicio);
  5.     for (intY = 0; intY < tauLTemp001.registres.length; intY++) {
  6.         bolLHiHaConcordancia = false;
  7.         for (intX = 0; intX < tauLTemp002.registres.length; intX++) {
  8.             var arrLValors = new Array();
  9.             intArray = 0
  10.             for (intCamps = 0; intCamps < tauLTemp001.camps.length; intCamps++) {
  11.                 arrLValors[intArray++] = tauLTemp001.registres[intY][tauLTemp001.camps[intCamps]];
  12.             }
  13.             for (intCamps = 0; intCamps < tauLTemp002.camps.length; intCamps++) {
  14.                 arrLValors[intArray++] = tauLTemp002.registres[intX][tauLTemp002.camps[intCamps]];
  15.             }
  16.             //Comprovar condicio del join
  17.             if(FiltrarJoin(arrLCamps,arrLValors,strCondicioInterna)) {
  18.                 tauPTaula.InsertarRegistre(arrLValors);
  19.                 bolLHiHaConcordancia = true;
  20.             }
  21.         }
  22.         if(!bolLHiHaConcordancia && intTipus == 1) {
  23.             var arrLValors = new Array();
  24.             intArray = 0
  25.             for (intCamps = 0; intCamps < tauLTemp001.camps.length; intCamps++) {
  26.                 arrLValors[intArray++] = tauLTemp001.registres[intY][tauLTemp001.camps[intCamps]];
  27.             }
  28.             for (intCamps = 0; intCamps < tauLTemp002.camps.length; intCamps++) {
  29.                 arrLValors[intArray++] = "";
  30.             }
  31.             tauPTaula.InsertarRegistre(arrLValors);
  32.         }
  33.     }


 
[:petrus75]
[/HS]


---------------
Mains power can kill, and it will hurt the entire time you’re dying from it.
n°1648035
Dj YeLL
$question = $to_be || !$to_be;
Posté le 23-11-2007 à 16:08:52  profilanswer
 

Ah oué quand même :/


---------------
Gamertag: CoteBlack YeLL
n°1653840
hametsu
Posté le 06-12-2007 à 14:21:33  profilanswer
 

Bonjour,
je soumet à  votre critique ma réflexion sur le rôle des classes model et modeldao. L'une permet de définir, filtrer et valider des données, tandis que l'autre permet leur ajout/modification/supression et séléction dans la couche d'accès aux données.
 
Le code est assez commenté pour illustrer ma pensée :
 

Code :
  1. <?php
  2. // Classe de base pour tous les modèles.
  3. // Procure les méthodes de définiton/récupération des propriétés.
  4. // Permet de filtrer les données en amont et en aval.
  5. // Permet de valider les données pour leur enregistrement/modification.
  6. // Indépendant de la source des données.
  7. abstract class Model
  8. {
  9.   // Contient la liste des erreures.
  10.   protected $errors = array();
  11.   // Constructeur.
  12.   public function __construct($data)
  13.   {
  14.     foreach ($data as $name => $value)
  15. {
  16.   $this->{$name} = $value;
  17. }
  18.   }
  19.  
  20.   // Définie une propriété.
  21.   public function __set($name, $value)
  22.   {
  23. $this->{'set_'.$name}($value);
  24.   }
  25.  
  26.   // Récupère une propriété.
  27.   public function __get($name)
  28.   {
  29. return $this->{'get_'.$name}();
  30.   }
  31.  
  32.   // Vérifie qu'une propriété existe.
  33.   public function __isset($name)
  34.   {
  35.     return (isset($this->{$name}));
  36.   }
  37.  
  38.   // Supprime une propriété.
  39.   public function __unset($name)
  40.   {
  41.     unset($this->{$name});
  42.   }
  43.  
  44.   // Définie une erreure
  45.   // $name : nom de la propriété
  46.   // $message : message d'erreur
  47.   public function set_error($name, $message)
  48.   {
  49.     $this->errors[$name] = $message;
  50.   }
  51.  
  52.   // Récupère une erreure spécifique
  53.   // $name : nom de la propriété
  54.   public function get_error($name)
  55.   {
  56.     return (isset($this->errors[$name]) ? $this->errors[$name] : NULL);
  57.   }
  58.  
  59.   // Récupère toutes les erreures
  60.   public function get_errors()
  61.   {
  62.     return (!empty($this->errors) ? $this->errors : NULL);
  63.   }
  64.  
  65.   // Méthode abstraite de validation des données
  66.   abstract protected function is_valid();
  67. }
  68. // Classe de modèle d'article.
  69. class Model_Article extends Model
  70. {
  71.   // Identifiant.
  72.   private $id;
  73.   // Titre.
  74.   private $title;
  75.   // Contenu.
  76.   private $content;
  77.  
  78.   // Définie l'identifiant.
  79.   public function set_id($id)
  80.   {
  81.     // Sécurise l'identifiant.
  82.     $this->id = filter_var($id, FILTER_SANITIZE_NUMBER_INT);
  83.   }
  84.  
  85.   // Récupère l'identifiant.
  86.   public function get_id()
  87.   {
  88.     return (isset($this->id) ? $this->id : NULL);
  89.   }
  90.  
  91.   // Définie le titre.
  92.   public function set_title($title)
  93.   {
  94.     // Sécurise le titre.
  95.     $this->title = filter_var($title, FILTER_FLAG_STRIP_HIGH, FILTER_FLAG_ENCODE_HIGH);
  96.   }
  97.  
  98.   // Récupère le titre.
  99.   public function get_title()
  100.   {
  101.     return (isset($this->title) ? $this->title : NULL);
  102.   }
  103.  
  104.   // Définie le contenu.
  105.   public function set_content($content)
  106.   {
  107.     // Sécurise le contenue
  108.     $this->content = filter_var($content, FILTER_FLAG_STRIP_HIGH, FILTER_FLAG_ENCODE_HIGH);
  109.   }
  110.  
  111.   // Récupère le contenu.
  112.   public function get_content()
  113.   {
  114.     return (isset($this->content) ? $this->content : NULL);
  115.   }
  116.  
  117.   // Valide les données
  118.   public function is_valid()
  119.   {
  120.     // Pour le moment on ne va considérer que la validation des données
  121. // pour leur insertion.
  122.     if (empty($this->title))
  123. {
  124.   $this->set_error('title', 'Veuillez entrer un titre.');
  125.   return FALSE;
  126. }
  127.     if (empty($this->content))
  128. {
  129.   $this->set_error('content', 'Veuillez entrer un contenu.');
  130.   return FALSE;
  131. }
  132. return TRUE;
  133.   }
  134. }
  135. // Classe de base du model d'accès aux données.
  136. abstract class Model_DAO
  137. {
  138.   // Nom de la classe de modèle
  139.   protected $model_class;
  140.   // connexion avec la base de données.
  141.   protected $dbh;
  142.   // nom de la table.
  143.   protected $table;
  144.   // structure de la table.
  145.   protected $schema;
  146.  
  147.   // Constructeur.
  148.   // $dbh : connexion avec la base de données.
  149.   public function __construct(PDO $dbh)
  150.   {
  151.     $this->dbh = $dbh;
  152. // Récupère le nom de la table
  153. // Model_DAO_<nom_dela_table>
  154. $this->table = substr(get_class($this), 10);
  155. $this->model_class = 'Model_'.$this->table;
  156. // La structure n'est pas définie ?
  157. // On peut imaginer plus tard la génération de structure,
  158. // puis leur inclusion plutôt qu'une requàªte...
  159. if (!isset($this->schema))
  160. {
  161.       $sql = 'SHOW COLUMNS FROM '.$this->table;
  162.   $stmt = $this->dbh->query($sql);
  163.   // Le serveur de base de données ne réussit pas à  executer de la requàªte ?
  164.   if (!$stmt)
  165.   {
  166.  $error = $this->dbh->errorInfo();
  167.  throw new Exception ($error[2]);
  168.   }
  169.   // Définie la structure de la table afin de pouvoir
  170.   // travailler avec le modèle.
  171.   $this->schema = $stmt->fetchAll(PDO::FETCH_ASSOC);
  172. }   
  173.   }
  174.  
  175.   // Insertion d'un nouvel enregistrement.
  176.   // $model : instance de la classe modèle.
  177.   public function insert(Model $model)
  178.   {
  179.     // Les données à  insérées sont-elles valides ?
  180.     if (!$model->is_valid())
  181. {
  182.   return FALSE;
  183. }
  184.     // Passe en revue la structure de la table.
  185. foreach($this->schema as $columns)
  186. {
  187.   // Récupère le nom des colonnes.
  188.   $names[]  = $columns['Field'];
  189.   // Récupérer les donnés contenues dans la classe modèle.
  190.   // Appel <nom_du_modele>::get_<nom_de_la_colonne> ();
  191.   $values[] = $model->{$columns['Field']};
  192.   // Remplie un tableau de marqueurs pour la préparation de la
  193.   // requàªte avant son execution.
  194.   $binds[]  = '?';
  195. }
  196. // Requàªte SQL
  197.     $sql = 'INSERT INTO `'.$this->table.'` (`'
  198.   . implode ('`, `', $names).'`) VALUES ('
  199.   . implode(', ', $binds).')';
  200. // Prépare la requàªte SQL avec des marqueurs
  201. $stmt = $this->dbh->prepare($sql);
  202. // Le serveur de base de données ne réussit pas à  préparer la requàªte SQL?
  203. if(!$stmt)
  204. {
  205.  $error = $this->dbh->errorInfo();
  206.  throw new Exception ($error[2]);
  207. }
  208. // Le serveur de base de données ne réussit pas à  executer la requàªte SQL préparée ?
  209. if (!$stmt->execute($values))
  210. {
  211.  $error = $stmt->errorInfo();
  212.  throw new Exception ($error[2]);
  213. }
  214. // Déinie l'identifiant du dernier enregistrement inséré dans le modèle.
  215. $model->id = $this->dbh->lastInsertId();
  216. return TRUE;
  217.   }
  218.   // Met à  jour un ou plusieurs enregistrement(s).
  219.   // $model : instance de la classe modèle.
  220.   public function update(Model $model)
  221.   {
  222.     // ...
  223.   }
  224.   // Supprime un ou plusieurs enregistrement(s).
  225.   // $model : instance de la classe modèle.
  226.   // On pourrait supprimer par l'identifiant ou
  227.   // le nom d'une colonne si elle est définie.
  228.   public function delete(Model $model)
  229.   {
  230.     // ...
  231.   }
  232.   // Sélectionne un ou plusieurs enregistrement(s).
  233.   public function select()
  234.   {
  235.     // ...
  236. // On retourne une instance de la classe modèle
  237. // pour chaque enregistrement.
  238. $result = array();
  239. foreach ($stmt->fetchAll(PDO::FETCH_ASSOC) as $record)
  240. {
  241.   $result = new $this->model_class($record);
  242. }
  243. return $result;
  244.   }
  245.  
  246.   // + implantation de méthode gérant les relations
  247.   // one-to-one, one-to-many et many-to-many
  248. }
  249. // Classe de modèle d'accés au données des articles.
  250. class Model_DAO_Article extends Model_DAO
  251. {
  252.   // Constructeur.
  253.   // Surcharge de la classe parente.
  254.   public function __construct($dbh)
  255.   {
  256.     $this->table = 'article';
  257.     $this->model_class = 'Model_Article';
  258.     parent::__construct($dbh);
  259.   }
  260. }
  261. // Instance de la classe de base de données
  262. $dbh = new PDO('mysql:host=localhost;dbname=tournoi', 'root', 'root');
  263. // Ajout des données au modèle article
  264. $article = new Model_Article (array('id' => NULL, 'title' => 'Article\'s title', 'content' => 'This is the article content'));
  265. // Ajout de l'instance de la classe de base de données au modèle d'accès aux données.
  266. $article_dao = new Model_DAO_Article ($dbh);
  267. // Ajout de l'instance du modèle article pour insérer les données.
  268. if ($article_dao->insert($article))
  269. {
  270.   echo '<p>Article ajouté avec succès.</p>';
  271. }
  272. else
  273. {
  274.   // Récupération des erreures
  275.   $errors = $article->get_errors();
  276.   // 1er choix d'affichage
  277.   // Ou bien une liste :
  278.   echo '<ul>';
  279.   foreach ($errors as $error)
  280.   {
  281.     echo '<li>'.$error.'</li>';
  282.   }
  283.   echo '</ul>';
  284.  
  285.   // 2ème choix d'affichage
  286.   // A l'endroit ou se situe le champs titre du formulaire
  287.   /*if (!empty($errors['title']))
  288.   {
  289.     echo '<p>'.$errors['title'].'</p>';
  290.   }
  291.   // A l'endroit ou se situe la zone de texte content du formulaire
  292.   if (!empty($errors['content']))
  293.   {
  294.     echo '<p>'.$errors['content'].'</p>';*/
  295.   }
  296. }
  297. // Pas implémenter dans l'exemple.
  298. // Uniquement à  titre informatif...
  299. /*
  300. foreach ($article_dao->select() as $article)
  301. {
  302.   echo '<p>id : '.$article->id.'</p><p>titre : '.$article->title.'</p><p>contenu : '.$article->content.'</p>';
  303.        
  304. }
  305. */
  306. ?>


 
PS : Il me semble qu'au cours de ce topic, une personne avait mis un lien vers un framework coréen, je le retrouve plus...

n°1653841
hametsu
Posté le 06-12-2007 à 14:22:12  profilanswer
 

De plus, je ne me souviens plus qui et où mais il me semble qu'une personne avait filé un lien vers un framework coréen.. si vous avez le lien...


Message édité par hametsu le 06-12-2007 à 14:25:29
n°1653924
FlorentG
Unité de Masse
Posté le 06-12-2007 à 16:04:57  profilanswer
 

Das ist pas mal [:dawa]
 
Je crois que c'est la design pattern Data Mapper, Un objet en prend un autre et le mappe sur une base de données.
 
Maintenant faudrait automatiser la validation (on en a parlé y'a pas longtemps), créer un objet qui permet de valider les données sans avoir à refaire à chaque fois les tests avec empty et tout. Surtout qu'il te manquerais la normalisation des données par exemple (genre pas de retour chariots dans un champs, trimer automatiquement, etc).
 
Après ça se tient parfaitement, reste à voir l'utilisation au quotidien. J'avais un truc un peu dans le style au départ, et ce qui était un peu chiant, comme je viens de le dire, c'est de se taper la validation à chaque fois.
 
Aussi, le seul truc un peu bof, c'est le code HTML dans le DAO, ça devrait être ailleurs. Genre une classe form qui gère les formulaires, avec une view form correspondante qui se chargerait d'afficher justement ces erreurs.

n°1653956
hametsu
Posté le 06-12-2007 à 16:29:31  profilanswer
 

Pour la validation, il existe désormais des fonctions de filtres donc je pense les utiliser pour la validation. La valiation se fait automatiquement avant insertion/modification et pour appliquer des trims, etc. on peut les ajouter dans les set/get.
 
Ou tu vois du HTML dans le DAO ?! :D
Dans les méthodes d'erreures ?
 
Pouet :p

n°1654115
Skateinmar​s
Posté le 06-12-2007 à 19:55:02  profilanswer
 

http://kohanaphp.com/home.html
 
Un fork de codeigniter en full php5 et objet


---------------
Feedback HAV
n°1654122
FlorentG
Unité de Masse
Posté le 06-12-2007 à 20:09:07  profilanswer
 

hametsu a écrit :

Ou tu vois du HTML dans le DAO ?! :D
Dans les méthodes d'erreures ?
 
Pouet :p


Ahem ;) ;)
 

Skateinmars a écrit :

http://kohanaphp.com/home.html
 
Un fork de codeigniter en full php5 et objet


C'est tout PHP5 qu'il faudrait forker [:dawak] Dès qu'ils ont fini d'implémenter l'utf-8 partout (le truc chiant), je propose qu'on en fasse un fork spécial HFR, et on rajouterais et corrigerais plein de trucs dedans [:dawa]

n°1654133
Dj YeLL
$question = $to_be || !$to_be;
Posté le 06-12-2007 à 20:27:19  profilanswer
 


 

FlorentG a écrit :


C'est tout PHP5 qu'il faudrait forker [:dawak] Dès qu'ils ont fini d'implémenter l'utf-8 partout (le truc chiant), je propose qu'on en fasse un fork spécial HFR, et on rajouterais et corrigerais plein de trucs dedans [:dawa]


 
Autant repartir from scratch là :whistle:


---------------
Gamertag: CoteBlack YeLL
n°1654167
Skateinmar​s
Posté le 06-12-2007 à 21:43:21  profilanswer
 

FlorentG a écrit :


C'est tout PHP5 qu'il faudrait forker [:dawak] Dès qu'ils ont fini d'implémenter l'utf-8 partout (le truc chiant), je propose qu'on en fasse un fork spécial HFR, et on rajouterais et corrigerais plein de trucs dedans [:dawa]


 
Ca va ya deja python/ruby si on veut un vrai langage :o


---------------
Feedback HAV
n°1654182
Shinuza
This is unexecpected
Posté le 06-12-2007 à 22:47:03  profilanswer
 

Faut commencer par refaire le parser :o


---------------
Mains power can kill, and it will hurt the entire time you’re dying from it.
n°1654183
FlorentG
Unité de Masse
Posté le 06-12-2007 à 22:51:30  profilanswer
 

Shinuza a écrit :

Faut commencer par refaire le parser :o


Le parser est conçu pour être le plus speed possible, d'où ses limitations. Y'a pas de notion de contexte, donc un token ne peut être affecté qu'à une seule utilisation possible... Si on refait le parser pour plus de possibilité, faut absolument inclure un opcode-cache en standard. Problem Solved.

n°1654312
omega2
Posté le 07-12-2007 à 10:09:00  profilanswer
 

FlorentG a écrit :


Le parser est conçu pour être le plus speed possible, d'où ses limitations. Y'a pas de notion de contexte, donc un token ne peut être affecté qu'à une seule utilisation possible... Si on refait le parser pour plus de possibilité, faut absolument inclure un opcode-cache en standard. Problem Solved.

En gros tu te pleins de ne pas avoir php6 sur ton serveur. :p

n°1654316
FlorentG
Unité de Masse
Posté le 07-12-2007 à 10:19:54  profilanswer
 

Ouais [:dawa] Ne serait-ce que pour l'unicode natif partout. Juste ça. Le reste je m'en fous

n°1654326
omega2
Posté le 07-12-2007 à 10:40:59  profilanswer
 

Pourtant tu parles de l'unicode, de la notion de contexte (appellé namespace dans php6) et d'opcode_cache (prévus et peut être déjà implémenté vu que je ne sais pas où ils en sont là dessus)
Tu te fous pas tant que ça du reste d'après ce que tu disais hier soir. :p

n°1654332
FlorentG
Unité de Masse
Posté le 07-12-2007 à 10:53:48  profilanswer
 

La notion de contexte que je parlais n'a rien à voir avec les namespaces.

 

Je parlais de la notion de contexte lorsqu'on parse un script. Style prends javascript, et le token '+'. Avec des numbers, ça va se transformer en addition. Avec des strings, en concaténation.

 

En PHP, le '+' ça ne peut que être de l'addition. Rien d'autre. Le parser ne cherche même à comprendre ce qu'il y a autour, nanan, c'est un addition. C'est pour ça que pour les namespaces, ils ne pouvaient pas utiliser le point pour séparer les packages, parce que le point c'est pour la concaténation...


Message édité par FlorentG le 07-12-2007 à 10:54:32
n°1654346
masklinn
í dag viðrar vel til loftárása
Posté le 07-12-2007 à 11:08:23  profilanswer
 

FlorentG a écrit :


Le parser est conçu pour être le plus speed possible, d'où ses limitations. Y'a pas de notion de contexte, donc un token ne peut être affecté qu'à une seule utilisation possible... Si on refait le parser pour plus de possibilité, faut absolument inclure un opcode-cache en standard. Problem Solved.


Non, le parser est une merde parce que le langage est une merde, n'a pas de grammaire et est fait par des couillons. Ca suffit cette excuse de "le parser est le plus speed possible", c'est n'importe quoi


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1654379
FlorentG
Unité de Masse
Posté le 07-12-2007 à 11:36:28  profilanswer
 

Nan, c'est la vérité, arrête d'être de mauvaise foi comme ça :(

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3  4  5  ..  34  35  36  ..  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-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR