Page 1 sur 1

Classe abstraite et définition d'attributs dans celle ci

Posté : 06 janv. 2011, 10:56
par Damador
Bonjour, voila j'ai un petit problème j'ai une classe abstraite dans laquelle j'ai définis des attributs voici une partie de code :

public static $id;
public $label;
public $nomRecup;
public $nomRecupSansCrochet;

Je voudrais savoir si il est normal que je n'arrive pas a appeler l'id dans mes méthodes de cette classe :
public function genereId()
{
$nomWithoutSpaces = str_replace(' ','',$this->label);
$this->nomRecupSansCrochet = $this->stripAccents($nomWithoutSpaces).'_'.ChampOptionnel.$this->id;
$this->nomRecup = $this->nomRecupSansCrochet.'[]';
$this->incrementeId();
return $this->nomRecup;
}

ici impossible de récuperer l'id. Ensuite j'ai une autre question est-t'il possible d'incrémenter une variable static définis dans une classe. je m'éxplique j'ai mon id et je voudrais que pour chaque champOptionnel avoir un id différent. Comme pourrais-je faire?

Re: Classe abstraite et définition d'attributs dans celle ci

Posté : 06 janv. 2011, 11:09
par stealth35
pourquoi avec mis id en static ?
public static $id;

Re: Classe abstraite et définition d'attributs dans celle ci

Posté : 06 janv. 2011, 11:18
par Damador
aucun raison particulière je m'en servais auparavant dans d'autre classe ce qui n'est plus le cas maintenant. Cela change-t'il quelque chose?

Re: Classe abstraite et définition d'attributs dans celle ci

Posté : 06 janv. 2011, 11:28
par stealth35
aucun raison particulière je m'en servais auparavant dans d'autre classe ce qui n'est plus le cas maintenant. Cela change-t'il quelque chose?
oui t'as pas acces via $this en static, enlevé le je pense que c'est la source de tes problèmes et qu'il n'est pas justifié

Re: Classe abstraite et définition d'attributs dans celle ci

Posté : 06 janv. 2011, 11:34
par Damador
Oui mais voyez vous le problème étant que comme je déclare mon attribut étant égal à 0 :
public $id = 0;

à Chaque création d'un objet fils, mon $id se remet à 0 et même si je l'incrémente cela ne change rien. : x

Re: Classe abstraite et définition d'attributs dans celle ci

Posté : 06 janv. 2011, 11:49
par sadeq
Bonjour,

Les membres statiques déclarés par le modificateur 'static' ne sont pas instanciés et sont donc accessibles par les instances ou les filles d'une même classe directement via la classe mère.
* Pour y accéder depuis un objet instance de la classe, il faut utiliser comme référence, le nom de la classe en tant que chemin d'accès comme ça: MaClasse::membreStatic.
* Pour y accéder dans le contexte descriptif de la classe elle-même, il faut utiliser une référence cyclique comme chemin d'accès de type : self::membreStatic.
* Pour y accéder via une sous-classe fille, il faut utiliser une référence d'héritage comme chemin d'accès à savoir : parent::membreStatic.

En clair, voici des exemples

Re: Classe abstraite et définition d'attributs dans celle ci

Posté : 06 janv. 2011, 11:57
par Damador
Ok, merci à vous deux pour ceux qui cherche je leur mets un bout de code :

//declaration
public static $id=0;

//utilisation (champOptionnel étant le nom de ma classe)
ChampOptionnel::$id

//incrémentation
ChampOptionnel::$id += 1;

Merci et bonne journée.

Re: Classe abstraite et définition d'attributs dans celle ci

Posté : 06 janv. 2011, 12:09
par stealth35
et jamais tu fait de new ChampOptionnel a un moment dans ton code ? comment tu accèdes a genereId ?