Page 1 sur 1

Comment utiliser dans une classe, une variable déclarée en dehors ?

Posté : 18 juin 2020, 23:04
par two3d
Bonjour,

**Ne pas prendre mal le message, merci.**

je suis null en classe PHP et ne souhaite pour le moment pas apprendre à les gérer*, seriez vous me dire comment utiliser ma variable externe dans ma classe PHP s'il vous plaît ?

*Si vous connaissez un tuto rapide et simple à comprendre sur les class PHP car tous les tutos que j'ai pu commencer à lire m'ont donné des boutons et j'ai abandonné car très long.


Ma classe PHP (un bout):
$var1ext="ma variable1";
$var2ext="ma variable2";

class MaClass
{
	/**
	 * je souhaite utiliser mes variables externes dans $var1 et $var2
	 * peut être que l'utilisation de protected n'est pas adapté....
	 */
	 
	protected $var1 = $var1ext;
	protected $var2 = $var2ext;
}

Bonne soirée

Re: Comment utiliser dans une classe, une variable déclarée en dehors ?

Posté : 19 juin 2020, 08:39
par Spols
Il faut les passer dans ton constructeur.

Mais si tu es allergique au classe, autant ne pas les utliser. il doit être possible de faire ce que tu veux en procédurale.

Re: Comment utiliser dans une classe, une variable déclarée en dehors ?

Posté : 19 juin 2020, 09:56
par two3d
Merci pour ta réponse.

C'est une classe toute faite que je me sert.

Donc en les passant par le constructeur elles deviennent globales en gros ? Comme pour les utiliser dans les fonctions ?

En cherchant sur le web hier j'ai vue qu'on pouvait utiliser une variable à l'intérieur d'une classe avec define(), peut être une solution simple pour moi ?

Re: Comment utiliser dans une classe, une variable déclarée en dehors ?

Posté : 19 juin 2020, 10:00
par Saian
Salut two3d, define ça permet de créer une constante. Les constantes sont accessibles partout mais ne peuvent pas être modifiée.
https://www.php.net/manual/fr/language.constants.php

Quand tu passes une variable à une fonction ou méthode, elle n'est utilisable que dans le scope de la fonction/méthode (non elle ne devient pas globale). Si tu veux l'utiliser dans différentes méthodes de ton objet, il faut soit la passer en paramètre à chaque méthode, soit la stocker comme propriété de l'objet (accessible via $this).

Une propriété private ne sera accessible en écriture et lecture que dans la classe où elle est définie.
Une propriété protected sera accessible en écriture et lecture dans la classe où elle est déclarée et dans ses éventuels enfants (extends).
Une propriété public sera accessible en écriture et lecture aussi bien dans la classe où elle est définie que dans ses enfants ou encore par manipulation externe à la classe.
https://www.php.net/manual/fr/language. ... bility.php

Après le comment gérer dans ton code, ça dépend vraiment de comment ces variables sont alimentées et de ce que tu veux en faire dans la classe. Mais à priori à la vu de ton exemple de code, les passer au constructeur et les mémoriser dans les deux propriétés de ton objet devrait le faire.

Re: Comment utiliser dans une classe, une variable déclarée en dehors ?

Posté : 20 juin 2020, 11:36
par two3d
Merci pour l'aide et le lien, en lisant un peu les commentaires sur PHP j'ai vue que j pouvais peut être définir mes variables après l'appel de ma classe, ex:
class MaClass
{
  /**
   * je souhaite utiliser mes variables externes dans $var1 et $var2
   * peut être que l'utilisation de protected n'est pas adapté....
   */
   
  protected $var1;
  protected $var2;
}

$MaClass = new MaClass();
$MaClass->$var1="ma variable1";
$MaClass->$var2="ma variable2";
Est ce correct de faire comme ça ?

Re: [RESOLU] Comment utiliser dans une classe, une variable déclarée en dehors ?

Posté : 20 juin 2020, 17:50
par two3d
Je suis passé par le constructeur comme préconisé (comme avec les fonctions au final). Merci
$MaClass = new MaClass("ma var 1","ma var 2");

Re: [RESOLU] Comment utiliser dans une classe, une variable déclarée en dehors ?

Posté : 22 juin 2020, 12:15
par Saian
Oui tu peux définir la propriété depuis l'extérieur de la classe mais c'est sans le $ devant le nom de la propriété ($MaClass->var1= 'valeur';) et à condition que la propriété soit public. Sinon généralement on fait plutôt des getters et des setters.

Re: [RESOLU] Comment utiliser dans une classe, une variable déclarée en dehors ?

Posté : 22 juin 2020, 21:50
par two3d
OK, merci, j'avais essayé mais avec le $ et en protected :ordi: |*()