Définition de classes

Mammouth du PHP | 843 Messages

29 juin 2007, 11:27

petite question:

quel est la difference entre ces deux classes au niveau de l'utilisation de public,private, et protected?
class exemple {
   public $var;
   //  ...
}
public class exemple2 {
   //  ...
}
comme je le comprend, la classe dont les var sont public sont exploitable partout (comme pour une global), alors que si c'est la classes qui est public, c'est toute cette classe qui devient exploitable de partout :?

c'est bien ça?
:: contactez moi par MP ::
:non: NON au language SMS sur les forums :non:

Eléphant du PHP | 199 Messages

29 juin 2007, 11:31

public = exploitable partout
private = exploitable uniquement au sein de la classe concernée
protected = exploitable au sein de la classe concernée et de toutes ses classes filles
Klomac - Blog Lambda

jed
Eléphant du PHP | 218 Messages

29 juin 2007, 11:33

Je rajouterais "static" qui avec des classes abstraites rend les méthodes & les propriétés accessibles sans instanciation. ;)

Eléphant du PHP | 199 Messages

30 juin 2007, 12:02

On peut rajouter final tant qu'à faire mais c'est assez useless pour une petite application ;)
Klomac - Blog Lambda

Mammouth du PHP | 843 Messages

01 juil. 2007, 10:47

Oui mais pour ce qui est de mon exemple, quel difference entre les deux classes?
:: contactez moi par MP ::
:non: NON au language SMS sur les forums :non:

Mammouth du PHP | 505 Messages

01 juil. 2007, 12:08

Ca n'a pas de sens de mettre un public devant une classe. Par definition, la définition d'une classe est accessible. Ce sont les propriété et les methodes qui peuvent recevoir cette mention.

Si tu ne précise rien, par default, c'est public.

Administrateur PHPfrance
Administrateur PHPfrance | 3131 Messages

01 juil. 2007, 12:53

Ca n'a pas de sens de mettre un public devant une classe. Par definition, la définition d'une classe est accessible. Ce sont les propriété et les methodes qui peuvent recevoir cette mention.
Pas tout-à-fait, dans certains langages on a la notion de «package» ou de «module», et une classe peut alors être privée : elle sera accessibles aux autres classes du même package, mais pas à l'extérieur ;)

Bon c'est juste pour la culture hein, en PHP on n'est pas concernés.

Mammouth du PHP | 19672 Messages

01 juil. 2007, 13:12

On peut quand même citer pour PHP les classes abstraites inaccessibles directement et qu'on ne peut utiliser que par des classes étendues.
On les écrira alors :
<?php
abstract class maclasseabstraite
{
    // ... etc ...
Et on aura une extension :
<?php
class maclasse extends maclasseabstraite
{
    // ... etc ...
:)
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Mammouth du PHP | 505 Messages

01 juil. 2007, 15:41

Pas tout-à-fait, dans certains langages on a la notion de «package» ou de «module», et une classe peut alors être privée : elle sera accessibles aux autres classes du même package, mais pas à l'extérieur ;)

Bon c'est juste pour la culture hein, en PHP on n'est pas concernés.
Quand quelqu'un débute en php et en plus découvre la POO, je ne suis pas sur que donner des informations sur d'autres langages soit une bonne idée. Il a déjà fort a faire sur le sujet qui le concerne, le noyer dans des infos sans rapport avec sa question ne fera que l'embrouiller.
Enfin, c'est mon avis.

Mammouth du PHP | 843 Messages

01 juil. 2007, 16:00

@TITERM: bien au contraire cela elargis l'esprit de programmeur qui par la même occasion decouvre d'autres methodes... ;)

@all: quelqu'un connait il des doc ou tuto sur les definition de classes assez complet à ce sujet ?

j'ai bien acheter PHP5avancé3°edition mais le chapitre sur les classes est un peu light :?
:: contactez moi par MP ::
:non: NON au language SMS sur les forums :non:

Mammouth du PHP | 505 Messages

01 juil. 2007, 16:40

@beroots: Ce n'est malheuresement pas une autre méthode mais un autre sujet. D'où ma remarque. Dailleurs, naholyr lui meme, apres avoir commencer son poste sous forme de contradiction le termine en disant que sa remarque est hors sujet. Je trouve juste dans le contexte présent et de la facon dont c'est formulé, ca n'apporte rien, au mieux ca embrouille le destinataire (bah ouil le post, c'est pour lui). Si Noholyr il voulait faire une remarque sur la POO magistrale, il n'aurait pas du, AMHA, commencer son poste comme il la fait, en donnant l'impression que ce qui a été dit avant est faux.

Administrateur PHPfrance
Administrateur PHPfrance | 3131 Messages

01 juil. 2007, 17:55

naholyr [...] termine en disant que sa remarque est hors sujet.
Non, j'ai conclu en précisant que c'était “pour la culture”, je ne considère pas pour autant que ce soit hors-sujet (vu qu'il a déjà bien dévié vers des généralités sur la POO par rapport à la question de départ). Et j'ai commencé par “pas tout-à-fait” car le message auquel je répondais indiquait (je n'oserais dire de manière magistrale) qu'il n'y avait aucun sens à associer la notion de «private» à une classe. J'indiquais simpement que si, ça a un sens.
Je trouve juste dans le contexte présent et de la facon dont c'est formulé, ca n'apporte rien, au mieux ca embrouille le destinataire (bah ouil le post, c'est pour lui).
Nous ne sommes pas ici dans une démarche de fast-food de la programmation, il n'y a pas marqué hotline sur la porte d'entrée, on essaie de faire progresser tout le monde en diffusant notre savoir. Et dans une démarche qualité il est bon (voire indispensable) de ne pas se borner à son petit langage de script à soi, mais à voir «ce qui se fait ailleurs». Avoir des notions de POO en Java, Python, Javascript, C#, etc... permet de savoir ce qui est possible et ce qui n'est pas possible en PHP. Quel est le principe général ? Quelles sont les lacunes du langage que j'étudie dans ce domaine ?

Maintenant peut-être que tu trouves que répondre à ces deux questions c'est hors-propos quand on aborde le thème. Ce n'est pas mon avis.
@all: quelqu'un connait il des doc ou tuto sur les definition de classes assez complet à ce sujet ?
Concernant la POO en général (et dans divers langages) tu peux déjà regarder l'article sur Wikipedia.

Concernant la POO en PHP5 :
- Le mieux est encore le manuel

On peut difficilement faire de la POO efficacement sans plonger la tête la première dans les «design patterns»… :
- L'article sur Wikipedia
- Un article général d'introduction au sujet des design patterns
- Une page très complète sur les design patterns en PHP
- Idem, un peu moins complet, mais en français
- Un article complet sur la mise en place de deux patterns : singleton et factory

… Et dans la modélisation (UML en général, mais ça tu peux le voir en diagonale car c'est assez indigeste et l'important reste de prendre l'habitude de faire des schémas, que tes flêches ne soient pas standard ne sera pas dramatique) :
- L'article sur Wikipedia
- Une bonne intro à l'UML en français

Enfin une des grandes applications de l'orienté objet en PHP, c'est de construire son site sur une conception MVC :
- L'article sur Wikipedia
- Understanding MVC in PHP

Si tu arrives à absorber tout ça, la force sera avec toi !

Mammouth du PHP | 843 Messages

08 juil. 2007, 23:52

mmmmmmm merci pour tout ces liens :)

je m'y met dès que j'ai un p'tit time ;)

je vous tient au jus si j'ai encore des question à ce sujet...
:: contactez moi par MP ::
:non: NON au language SMS sur les forums :non:

Mammouth du PHP | 843 Messages

04 août 2007, 14:05

j'ai une nouvelle question en ce qui concerne les class...

peut on definir une variable à private static? :-k
class ma_class {
   private static $var;

   public function ma_fonction()
   {
      echo var;
   }
}
ou est ce qu'il est preferable de faire ainsi et de definir à static dans la fonction:
class ma_class {
   private $var;

   public function ma_fonction()
   {
      static $this->var;
      echo var;
   }
}
l'objectif est de definir une variable aleatoire qui ne change pas durant toute l'utilisation de la classe...

merci d'avance :)
:: contactez moi par MP ::
:non: NON au language SMS sur les forums :non: