OVH Cloud OVH Cloud

Confirmation d'un pb de PHP4 (

3 réponses
Avatar
Stephane
Bonjour,

Je voudrais avoir confirmation d'un manque des versions de PHP inférieures à
PHP v4.3.x (que je n'ai pas testé). Je sais qu'il est possible de faire cela
avec le Zend Engine 2.0.

Si j'ai les objets que vous trouverez un peu plus bas, y a-t-il une solution
en PHP 4.2.x (par exemple) pour effectuer le genre d'appels que vous
trouverez ci-dessous ?

$adresse =& new Adresse("1, bd de la Paix", "75000", "PARIS");
$utilisateur =& new Utilisateur("MARTIN", "Jean",
"jmartin@adressemailbidon.zz", $adresse);

// Les fameux appels
$utilisateur->getAdresse()->setCodePostal("75001");
$utilisateur->getAdresse()->setVille("PARIS 01");


Merci pour votre aide.
Stéphane


<?php
class Adresse
{
var $adresse;
var $codepostal;
var $ville;

function Adresse($adresse, $codePostal, $ville) {
$this->setAdresse($adresse);
$this->setCodePostal($codePostal);
$this->setVille($ville);
}
function setAdresse($adresse) {
$this->adresse = $adresse;
}
function setCodePostal($codepostal) {
$this->codepostal = $codepostal;
}
function setVille($ville) {
$this->ville = $ville;
}
function getAdresse() {
return($this->adresse);
}
function getCodePostal() {
return($this->codepostal);
}
function getVille() {
return($this->ville);
}
}

class Utilisateur
{
var $nom;
var $prenom;
var $email;
var $adresse;

function Utilisateur($nom, $prenom, $email, &$adresse) {
$this->setNom($nom);
$this->setPrenom($prenom);
$this->setEmail($email);
$this->setAdresse($adresse);
}
function setNom($nom) {
$this->nom = $nom;
}
function setPrenom($prenom) {
$this->prenom = $prenom;
}
function setEmail($email) {
$this->email = $email;
}
function setAdresse(&$adresse) {
$this->adresse = $adresse;
}
function getNom() {
return($this->nom);
}
function getPrenom() {
return($this->prenom);
}
function getEmail() {
return($this->email);
}
function &getAdresse() {
return($this->adresse);
}
}
?>

--
MINOTAUR (un projet francophone de CMS en PHP/MySQL)
N'hésitez pas à rejoindre le projet et participer ainsi aux logiciels
libres.
http://projects.freelinuxdev.net/minotaur/

3 réponses

Avatar
Erika
Salut,

Non, je ne crois pas que cela soit possible avec PHP4, mais je crois par
contre que ça le sera avec PHP5.

Ca s'appelle le déréférencement...

Stephane wrote:
// Les fameux appels
$utilisateur->getAdresse()->setCodePostal("75001");
$utilisateur->getAdresse()->setVille("PARIS 01");


Avatar
Cornelius
"Stephane" a écrit dans le message de news:
bdq01t$fhq$
Bonjour,

Je voudrais avoir confirmation d'un manque des versions de PHP inférieures
à

PHP v4.3.x (que je n'ai pas testé). Je sais qu'il est possible de faire
cela

avec le Zend Engine 2.0.

Si j'ai les objets que vous trouverez un peu plus bas, y a-t-il une
solution

en PHP 4.2.x (par exemple) pour effectuer le genre d'appels que vous
trouverez ci-dessous ?

$adresse =& new Adresse("1, bd de la Paix", "75000", "PARIS");
$utilisateur =& new Utilisateur("MARTIN", "Jean",
"", $adresse);



ça je ne sais pas

// Les fameux appels
$utilisateur->getAdresse()->setCodePostal("75001");
$utilisateur->getAdresse()->setVille("PARIS 01");



ça c'est ok

Avatar
Marc
// Les fameux appels
$utilisateur->getAdresse()->setCodePostal("75001");
$utilisateur->getAdresse()->setVille("PARIS 01");


ca ne passe pas avec les methodes, mais ca passe
par les attributs.

ex :

$obj->sub->method(); // OK
$obj->method()->method(); // not OK

c'est plutot moyen pour l'encapsulation et l'heritage, mais bon
en attendant mieux c'est un bon palliatif.