Accès à une propriété d'une autre classe

Eléphant du PHP | 226 Messages

25 mars 2011, 17:13

Bonjour/ bonsoir,

J'ai la classe suivante:
class Auth {

    private $db; //variable qui recoie l'objet de connexion PDO
    var $erreurPage = 'files/erreurs/500.html'; //var de redirection en cas d'erreur
...
//instanciation
$auth = new Auth($PDO);
}
J'ai une deuxième classe dans laquelle j'aimerais appeler la propriété $erreurPage de la première classe:
class searchComptes {

    private $objAuth;
    private $db;

    public function __construct($db, $objet){
        $this->db = $db;
        $this->objAuth = $objet;
        var_dump($this->objAuth);
...
$searchCompte = new searchComptes($PDO, $auth);
    }
l'objet $auth est bien accessible par cette classe:

Code : Tout sélectionner

object(Auth)[2] private 'db' => object(PDO)[1] public 'erreurPage' => string 'files/erreurs/500.html' (length=22)
Mais je n'arrive pas à utiliser 'erreurPage'. Dans une méthode, j'aimerais y faire appel:
header('Location:'.$this->objAuth->erreurPage);
mais j'obtiens systématiquement une erreur... Comment faire ?
merci,
«Le matin, quand il t’en coûte de te réveiller, que cette pensée te soit présente: c’est pour faire œuvre d’homme que je m’éveille.»
Marc Aurèle.

ViPHP
ViPHP | 5462 Messages

25 mars 2011, 17:21

$this->objAuth->db->erreurPage non ?

sinon c'est pas var mais public

Eléphant du PHP | 226 Messages

28 mars 2011, 11:30

Ben non... et
header('Location:'.$this->objAuth->erreurPage);
est correct ce matin (curieusement d'ailleurs) Un problème de cache peut-être... je l'avais pourtant désactivé...
En terme d'encapsulation, var ne correspond pas à public ?
merci,
«Le matin, quand il t’en coûte de te réveiller, que cette pensée te soit présente: c’est pour faire œuvre d’homme que je m’éveille.»
Marc Aurèle.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

28 mars 2011, 12:16

Yop,

Effectivement var indique une propriété public mais ce qu'indique stealth35 c'est que var est une methode obsolète de déclarer ses attributs dans une classe (c'est la version poo de php 4).
Si tu utilise php5 utilise public protected ou private cela t'évitera les problemes de compatibilité a l'avenir (si la version php4 n'est plus acceptée avec php 5 par exemple)


@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 226 Messages

28 mars 2011, 15:34

Merci pour la précision !
«Le matin, quand il t’en coûte de te réveiller, que cette pensée te soit présente: c’est pour faire œuvre d’homme que je m’éveille.»
Marc Aurèle.