| auteur : vdemeester | Les attributs static, dans les versions antécédentes à PHP 5 ne sont pas intégrés à PHP.. Pourtant il y a un moyen de les simuler.
class B{
var $compteur;
function B(){
static $compteur;
$this->compteur =& $compteur;
(int) $this->compteur++;
}
}
$B_test = new B();
echo $B_test->compteur . "<br />";
$B_test1 = new B();
echo $B_test1->compteur . "<br />";
echo $B_test->compteur . "<br />"; |
Ce qui va générer la sortie suivante : On a bien simulé un attribut statique (ici il compte le nombre d'objets mais on peut imaginer d'autres utilisations).
|
| auteurs : vdemeester, Jérôme | En PHP 4, si les objets peuvent posséder un constructeur, il n'a pas été prévu dans l'implémentation du langage de méthode destructeur. Voici deux façons de détruire un objet en simulant une méthode destructeur.
Exemple 1 :
<?
function DestroyObject ($name){
$theobject = &$GLOBALS[$name];
if (method_exists ($theobject,"Destroy"))
$theobject->Destroy ();
unset ($GLOBALS[$name]);
}
class xyz{
var $somevar;
function xyz (){
}
function Destroy (){
echo ("Destruction d'un objet!");
}
function SomeDo (){
echo ("On fait quelquechose: ".$this->somevar);
}
}
$example = new xyz;
$example->somevar = 3;
$example->SomeDo();
DestroyObject ("example");
$example->SomeDo ();
?> |
<?
class xyz {
var $somevar;
function xyz (){
}
function __sleep (){
echo ("Destruction d'un objet!");
return array();
}
function SomeDo (){
echo ("On fait quelquechose: ".$this->somevar);
}
}
$example = new xyz;
$example->somevar = 3;
$example->SomeDo();
serialize($example);
unset($example);
$example->SomeDo ();
?> |
|
| auteur : Forum PHP | Pour créer une instance d'une classe à partir d'un nom de classe créé dynamiquement, il suffit d'avoir le nom de la classe sous forme de chaine de caractères.
Exemple : $nomClasse = 'Membre';
$objet =& new $nomClasse(); |
La chaine de caractères peut-être construite de n'importe quel façon que ce soit par concaténation ou à partir d'une information tirée d'une base de données par exemple.
|
lien : Comment appeler une variable dont le nom est stocké dans une autre variable?
|
Consultez les autres F.A.Q's
Les sources présentés sur cette pages sont libre de droits,
et vous pouvez les utiliser à votre convenance. Par contre cette page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs.
Copyright ©2003
Developpez LLC. Tout droits réservés Developpez LLC.
Aucune reproduction, même partielle, ne peut être faite de ce site et de
l'ensemble de son contenu : textes, documents et images sans l'autorisation
expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans
de prison et jusqu'à 300 000 E de dommages et intérets.
Cette page est déposée à la SACD.
|