CMatt
Messages postés38Date d'inscriptionvendredi 16 janvier 2004StatutMembreDernière intervention15 octobre 2010
-
7 avril 2006 à 11:32
CMatt
Messages postés38Date d'inscriptionvendredi 16 janvier 2004StatutMembreDernière intervention15 octobre 2010
-
7 avril 2006 à 14:19
Bonjour à tous,
je rencontre quelques difficultés à faire de la POO avec PHP4.
Voici mon objet :
// Implémente une planète
class Planete
{
// Contient le nom
var $Nom;
// Contient l'alliance
var $Alliance;
// Contient le joueur
var $Joueur;
// Contient le numéro
var $Numero;
// Contient le type
var $Type;
// Contient le système
var $Systeme;
// Initialise une nouvelle planète
// $pXml : noeud Xml sous-jacent (optionnel)
function Planete( $pXml = null )
{
// Si le système est valide
if( $pXml!=null && is_a( $pXml, "XmlElement" ) && $pXml->Nom=="planete" )
{
// Configure la planète
$this->Nom = $pXml->Valeur;
$this->Alliance = $pXml->Attributs["alliance"]->Valeur;
$this->Joueur = $pXml->Attributs["joueur"]->Valeur;
$this->Numero = (int) ($pXml->Attributs["numero"]->Valeur);
$this->Type = $pXml->Attributs["type"]->Valeur;
$this->Systeme = null;
}//if
// Sinon
else
{
// Initialise la planète
$this->Nom = "";
$this->Alliance = "";
$this->Joueur = "";
$this->Numero = 0;
$this->Type = "n";
$this->Systeme = null;
}//else
}//constructeur
}//classe planete
Et voici un petit bout de code qui donne des résultats inattendus :
// Initialise de nouvelles planètes
$pPlanete1 = new Planete();
$pPlanete2 = new Planete();
Instances planètes : contenus identiques et références identiques.
Le contenu des deux instances est strictement le même.
Dans la doc PHP, il est indiqué que l'opérateur "===" compare les références et non les contenus des objets. Or j'ai bien là 2 références distinctes il me semble, non?
Ou alors existe-t-il une autre méthode de comparer des références à des objets?
CMatt
Messages postés38Date d'inscriptionvendredi 16 janvier 2004StatutMembreDernière intervention15 octobre 2010 7 avril 2006 à 11:46
Juste une petite correction à ce que j'ai dit précédement : l'opérateur "===" compare le contenu et le type, et non pas des références.
Mon problème se résume donc à une solution qui me permettera de comparer des références.
CMatt
Messages postés38Date d'inscriptionvendredi 16 janvier 2004StatutMembreDernière intervention15 octobre 2010 7 avril 2006 à 12:17
Outre la valeur des propriétés, ce qui m'intéresse, c'est de savoir si j'ai à faire à une seule et même instance (un même objet en mémoire) comme la méthode statique bool Object.Equals( object obj ) en C#..
CMatt
Messages postés38Date d'inscriptionvendredi 16 janvier 2004StatutMembreDernière intervention15 octobre 2010 7 avril 2006 à 14:19
Merci, après quelques recherches, il me semble aussi que PHP4 est plutôt limite pour tout ce qui est POO.
En effet, je suis tombé sur un site où il était dit que l'opérateur "===" comparait le contenu et le type seulement en PHP4, alors que en PHP5, il compare les références, du moins pour les objets il me semble.