[PHP Class] - Création d'un objet et attribution de valeurs (tableau)

- Création d'un objet et attribution de valeurs (tableau) [PHP Class] - PHP - Programmation

Marsh Posté le 07-11-2008 à 14:40:34    

Hello,
 
Je suis en train de coder un générateur de formulaire en objet. étant donné que je ne suis pas encore expert dans les Class, il y a un truc que je ne comprends pas.
 
mes class
 

Code :
  1. // Basic class to define a new form
  2. class cForm {
  3.     var $name;
  4.     var $items = array();
  5. }
  6. // Basic class to define items
  7. class cItems {
  8. var $name;
  9. var $mandatory;
  10. }
  11. // Extended class of cItems
  12. class cItemsInput extends cItems {
  13. var $value;
  14. var $hidden;}


 
pourquoi est-ce que quand je code

Code :
  1. $userform = new cForm;
  2. $userform->name = "New User / User Modification";
  3. $userform->items[1] = new cItemsInput("valeur1", "0", "champ1", "1" );


 
aucune valeur ne se retrouve dans $userform-items[1]
alors que si je code

Code :
  1. $userform = new cForm;
  2. $userform->name = "New User / User Modification";
  3. $userform->items[1] = new cItemsInput;
  4. $userform->items[1]->value = "blablabla";


 
ça marche !
 
merci


Message édité par darxmurf le 07-11-2008 à 14:42:37

---------------
Des trucs - flickr - Instagram
Reply

Marsh Posté le 07-11-2008 à 14:40:34   

Reply

Marsh Posté le 07-11-2008 à 14:59:41    

Je sais pas...
T'as un constructeur correspondant aux paramètres que t'envoies dans cItemsInput?


---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
Reply

Marsh Posté le 07-11-2008 à 15:13:46    

on dirait que non.[:joce]
Il faudrait commencer par la base là non?[:joce]


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 07-11-2008 à 15:16:55    

[:paysan] il doit me manquer quelques connaissances il me semble...

 

pour moi le fait de déclarer une class genre

 

class ma_class{
  var $nom;
}

 

suffisait

Message cité 2 fois
Message édité par darxmurf le 07-11-2008 à 15:18:04

---------------
Des trucs - flickr - Instagram
Reply

Marsh Posté le 07-11-2008 à 15:17:49    

darxmurf a écrit :

[:paysan] il doit me manquer quelques connaissances il me semble...


Déjà, pourquoi tu utilises la syntaxe php4 et pas php5?
Ensuite, est-ce que tu as regardé un peu la doc, et les exemples?


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 07-11-2008 à 15:23:14    

Justement je suis sur 2 ou 3 docs mais c'est pas vraiment clair...
il faudrait que je créé ça comme ça ?
 

Code :
  1. // Basic class to define a new form
  2. class cForm {
  3.   var $name;
  4.   var $items = array();
  5.   function__construct() {}
  6.   function__destruct() {}   
  7. }
  8. // Basic class to define items
  9. class cItems {
  10. var $name;
  11. var $mandatory;
  12.   function__construct() {}
  13.   function__destruct() {}   
  14. }
  15. // Extended class of cItems
  16. class cItemsInput extends cItems {
  17. var $value;
  18. var $hidden;}


 
??


---------------
Des trucs - flickr - Instagram
Reply

Marsh Posté le 07-11-2008 à 15:25:45    

var est déprécié. Tu es dans quelle version de php?
et tes constructeurs/destructeurs s'ils sont vides ils feront rien.


Message édité par skeye le 07-11-2008 à 15:26:05

---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 07-11-2008 à 15:36:38    

ah bah ...
 
PHP 5...


---------------
Des trucs - flickr - Instagram
Reply

Marsh Posté le 07-11-2008 à 15:38:46    

darxmurf a écrit :

[:paysan] il doit me manquer quelques connaissances il me semble...
 
pour moi le fait de déclarer une class genre
 
class ma_class{
  var $nom;
}
 
suffisait


Code :
  1. class ma_class{
  2.   protected $nom;
  3. ...
  4.   public function setNom($nom){
  5.      $this->nom = $nom;
  6.   }
  7.   public function getNom(){
  8.      return $this->nom;
  9.   }
  10. }


ceci est plus correct car tu maitrises ce que tu fais avec tes variables à l'intérieur de ta classe.


Message édité par Profil supprimé le 07-11-2008 à 15:39:04
Reply

Marsh Posté le 07-11-2008 à 15:40:12    

darxmurf a écrit :

ah bah ...
 
PHP 5...


http://www.php.net/manual/fr/language.oop5.php
 
Bonne lecture.


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 07-11-2008 à 15:40:12   

Reply

Marsh Posté le 07-11-2008 à 15:57:04    

j'y étais :jap: merci ! :)


---------------
Des trucs - flickr - Instagram
Reply

Marsh Posté le 07-11-2008 à 16:48:18    

donc si je comprends bien, il faudrait faire ça comme ça?
 

Code :
  1. class cItems {
  2. public $name, $mandatory;
  3. public function __construct($cname, $cmandotary){
  4.   $this->name = $cname;
  5.   $this->mandatory = $cmandatory;}
  6. }
  7. $userform = new cItems("valeur1", "non" );


 
[:paysan]


---------------
Des trucs - flickr - Instagram
Reply

Marsh Posté le 07-11-2008 à 16:53:53    

par exemple.


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 07-11-2008 à 16:55:45    

mais ça ne marche pas [:tinostar]
je tourne sous PHP 5.1


---------------
Des trucs - flickr - Instagram
Reply

Marsh Posté le 07-11-2008 à 16:57:34    

darxmurf a écrit :

mais ça ne marche pas [:tinostar]
je tourne sous PHP 5.1


"ça marche pas" n'est pas un message d'erreur exploitable.:o


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 07-11-2008 à 16:58:20    

skeye a écrit :


"ça marche pas" n'est pas un message d'erreur exploitable.:o


 
 
c'est pas faux...
 
quand je print le contenu de mon objet :  
 

Code :
  1. object(cItems)#1 (2) {
  2.   ["name"]=>
  3.   NULL
  4.   ["mandatory"]=>
  5.   NULL
  6. }


---------------
Des trucs - flickr - Instagram
Reply

Marsh Posté le 07-11-2008 à 16:58:56    

montre ton script complet?


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 07-11-2008 à 17:04:01    

hmmmmm chose étrange,

 

ma définition de class est dans un fichier class.php
ma création d'objet est dans un fichier creation.php
mon affichage d'objet est dans un fichier affichage.php

 

les 3 sont en include() dans mon index.php et ça donne le résultat de mon post précédent.

 

je viens de tout coller dans index.php comme ça

 
Code :
  1. class cItems {
  2. public $name, $mandatory;
  3. public function __construct($cname, $cmandotary){
  4.   $this->name = $cname;
  5.   $this->mandatory = $cmandotary;}
  6. }
  7. $userform = new cItems("valeur1", "aaa" );
  8. echo "<pre>";
  9. var_dump($userform);
  10. echo "</pre>";
 

et là ça marche...

Message cité 1 fois
Message édité par darxmurf le 07-11-2008 à 17:04:31

---------------
Des trucs - flickr - Instagram
Reply

Marsh Posté le 07-11-2008 à 17:05:36    

darxmurf a écrit :


ma définition de class est dans un fichier class.php
ma création d'objet est dans un fichier creation.php
mon affichage d'objet est dans un fichier affichage.php


euh, ton découpage est étrange.[:pingouino]


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 07-11-2008 à 17:08:49    

en fait le principe est le suivant
 
j'ai une 10 aine de formulaires différents à générer et gérer.
je pensais faire
- un fichier class.php avec les déclaration de toutes mes class etc.
- un fichier .php par formulaire
- un fichier .php avec mon script d'affichage pour générer et afficher les formulaires lorsqu'ils sont appelés


---------------
Des trucs - flickr - Instagram
Reply

Marsh Posté le 07-11-2008 à 17:10:37    

darxmurf a écrit :

en fait le principe est le suivant

 

j'ai une 10 aine de formulaires différents à générer et gérer.
je pensais faire
- un fichier class.php avec les déclaration de toutes mes class etc.
- un fichier .php par formulaire
- un fichier .php avec mon script d'affichage pour générer et afficher les formulaires lorsqu'ils sont appelés

 

1 fichier par classe.
Après tu gères comme tu veux.[:joce]

Message cité 2 fois
Message édité par skeye le 07-11-2008 à 17:10:42

---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 07-11-2008 à 17:12:56    

[:paysan]


---------------
Des trucs - flickr - Instagram
Reply

Marsh Posté le 07-11-2008 à 17:16:52    

skeye a écrit :

1 fichier par classe.


JavaG [:sadnoir]


---------------
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, and replicate and expand beyond their wildest dreams by throwing away the limits imposed by overbearing genetic r
Reply

Marsh Posté le 07-11-2008 à 17:37:52    


quand tu débutes c'est la meilleure méthode pour pas faire n'importe-quoi.:o


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 07-11-2008 à 18:07:04    

skeye a écrit :


quand tu débutes c'est la meilleure méthode pour pas faire n'importe-quoi.:o


Bof.


---------------
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, and replicate and expand beyond their wildest dreams by throwing away the limits imposed by overbearing genetic r
Reply

Marsh Posté le 07-11-2008 à 20:58:41    

j'approuve skeye
 
c'est pas forcement parfait, mais ca oblige  a structure son arborescence et ca simplifie la recherche dans le code


---------------

Reply

Marsh Posté le 07-11-2008 à 21:17:27    

skeye a écrit :


 
1 fichier par classe.


Etpis c'est tout  [:cloud_]  
Sérieux je reprends un projet la, genre 80ko par fichier et toutes les lignes c'est "Class myRoxCLass()"
 
:(:(

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed