[PHP] Les classes, un léger problème !

JooS Messages postés 2705 Statut Membre -  
Giorgiolino Messages postés 270 Statut Contributeur -
Bonsoir,
Un mal entendu avec les classes ! :)

class Dire {    
    public static $phrase = 'Salut le monde';    

    public static function DirePhrase() {    
            //echo $this->phrase;    
            echo self::$phrase;    
    }    
}    

$bj = new Dire;    
$bj->DirePhrase();    
Dire::DirePhrase();    


Comme ça, ça fonctionne !

Maintenant, si mon premier attribut n'est pas statique, comment je pourrais l'afficher, a travers la méthode biensure ?!

Merci !

Mettez en résolu quand c'est résolu -.- ...
A voir également:

3 réponses

assasin altair Messages postés 4 Statut Membre 3
 
la solution est de modifier la valeur d'attribut $phrase vous pouvez faire ca avec une affectation simple
$bj->phrase = "Salut le monde"

ou bien a travers une methode
function edit($phrase) {
$this->phrase = $phrase;
}

ou a travers le constructeur

function __construct($phrase) {
$this->phrase = $phrase;
}
$bj = new Dire(" -- Phrase -- ");

mais le problem que ce pose est que vous devez declarer une methode non static pour acceder a une attribut qui n'est pas static
0
JooS Messages postés 2705 Statut Membre 228
 
Re ...

Mon but n'est pas de modifier un attribut ou de l'initialiser, le problème posé est, si mon attribut n'était pas statique, comment y accéder indirectement, or, en utilisant une méthode statique !

Je pense que ce n'est pas possible !!!

Merci quand même ! ;)
Mettez en résolu quand c'est résolu -.- ...
0
Giorgiolino Messages postés 270 Statut Contributeur 52
 
Ce n'est effectivement pas possible.

Un attribut non statique n'est disponible que pour des objets, c'est-à-dire des instances d'une classe.

Lorsqu'on est dans une méthode statique on n'est pas dans le contexte d'un objet (par définition).

Ce qui explique l'impossibilité.

Cela dit la question à se poser est : pourquoi voudrait faire cela ?

"La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information"
Albert Einstein
0