question sur la declaration de variable php

WRInaute discret
Bonsoir,

Souvent je vois dans des scripts PHP des syntaxes du genre :

Code:
function ma_fonction()
{
$this->variable1='localhost';
$this->variable2='nom';
$this->variable3='passe';
}

Je n'arrive pas a comprendre cette syntaxe : le $this et le -> devant la déclaration des variables

Je pense que cela doit être simple, mais je n'arrive pas a trouver

Si une bonne ame pouvait passer par la....

Merci d'avance
 
WRInaute discret
ça fait partie des "bases" de la programation objet.

variable1,variable2,variable3 sont des variables déclarées dans l'objet auquel appartient ma_fonction().
le le "->" permet d'accéder à une variable (si publique) de l'objet, ou à une fonction.
le $this permet de spécifier que c'est la variable de l'objet à laquelle tu veux accéder.

Exemple:

var $argument;

function plop($argument){

//plip

}

si tu accèdes dans la fonction "plop" à $argument, ce sera par défaut la variable qui aura été passée en paramètre de la fonction.
Alors que si tu accèdes à $this->argument, ce sera celle du dessus, potentiellement modifiée ailleurs.

On touche ici à la notion de visibilité de la variable.
Le $"argument" de "plop" n'est visible que dans la fonction, celui du haut, s'il est public est visible par tous, sinon, dans tout l'objet.

En espérant avoir été à peu près clair (ce sont des notions d'objet, mais ne connaissant pas bien l'objet en PHP, j'm'a p'têt gourré. En tt cas, en Java, VB, C++ ou d'autres, c'est comme ça [au nom des accesseurs près])
 
Nouveau WRInaute
Il s'agit de la définition d'une classe.
This->variable1 définit une propriété de la classe
reporte toi à la doc sur la POO (programation orientée objet) de PHP
 
WRInaute occasionnel
C'est une notion de programation objet. Le $this->variable1 indique que l'on veux la variable "variable1" de objet courant.

Le bout de code que tu donne pourrais correspondre à une methode (fonction) d'une classe et donc que l'on veux accedé au variable de l'instance de cette classe (objet)

... Je sais pas si je suis très clair, mais en gros c'est ça.

[EDIT] Grillé :D
 
WRInaute discret
Merci à tous.

Je sens qu'il va falloir que je me penche sur la philosophie de la programation objet

:roll:
 
WRInaute accro
Un petit exemple concret :

Code:
classe Test {
var $test = 0;

function plus($nombre) {
$this->test = $this->test + $nombre;

return $this->test;
}

function moins($nombre) {
$this->test = $this->test - $nombre;

return $this->test;
}
}
Voici la déclaration d'une classe simple

Code:
$test = new Test();

$n = $test->plus(5);
echo $n; //Affichera 5

$n = $test->moins(2);
echo $n; //Affichera 3

Rien de bien compliqué ;)
Le code ci-dessus fonctionne avec PHP 4.
PHP 5 intègre en plus les principes de variables protégées et privées.
Ainsi que __construct et __destruct, qui sont executées à l'initialisation et à la destruction de l'objet.
 
Discussions similaires
Haut