Que signifie ce code : $cart->show_total() ?

Eléphant du PHP | 91 Messages

10 mai 2007, 19:20

Hello.

Je me lance dans un site e-commerce et sous OsCss on peut voir un peut partout des fonctions comme :

Code : Tout sélectionner

function show_total() { $this->calculate(); return $this->total; }
qui sont ensuite appelée comme ça :

Code : Tout sélectionner

$cart->show_total()
que signifie la flèche ici ? et le this ?

Merci !

(je sens que je vais pas mal passer par ici moi ...)

lem
Eléphant du PHP | 108 Messages

10 mai 2007, 19:44

Commençons par la fin:

Code : Tout sélectionner

$cart->show_total()
exécute la fonction show_total pour l'objet $cart.

Dans la fonction show_total(), on lit:

Code : Tout sélectionner

$this->calculate();
qui exécute la fonction calculate pour l'objet $this.

Qu'est ce que l'objet $this ?
C'est précisément l'objet pour lequel tu as appelé la fonction: ici $cart

La fonction calculate() modifie (je le devine) la propriété "total" de l'objet $this. (donc de l'objet $cart si tu me suis)

Et au final, la fonction show_total() renvoie la (nouvelle) valeur de la propriété "total" de l'objet $cart.

Je ne sais pas si je suis bien claire.. :roll:
Lem.

Eléphant du PHP | 91 Messages

10 mai 2007, 20:02

Si si, je pense avoir à peu près saisi.

Ce genre de flèche n'est utilisé que lorsque la fonction utilise une variable this ?

Et elle peut servir et à appeler une fonction et à appeler une propriété ?

Et peut-on savoir ici si $cart est modifiée localement ou globalement ?

Désolé pour toutes ces questions, ca doit être la base du php ...

lem
Eléphant du PHP | 108 Messages

10 mai 2007, 20:14

Ce genre de flèche n'est utilisé que lorsque la fonction utilise une variable this ?
Non, elle sert pour toute méthode ou propriété d'un objet, quelle qu'elle soit.
Et elle peut servir et à appeler une fonction et à appeler une propriété ?
A ceci près, je crois me souvenir, que les "fonctions" du langage objet sont appelées "méthodes".
Et peut-on savoir ici si $cart est modifiée localement ou globalement ?
Je dirais qu'il s'agit surtout de savoir si la variable est locale ou globale.
Désolé pour toutes ces questions, ca doit être la base du php ...
Pas du tout. Comme le disais je ne sais plus qui cette semaine sur ce même forum, il n'y a pas de nécessité à utiliser le langage objet quand on programme en PHP. Beaucoup ne l'utilisent pas. Moi-même je l'emploie assez peu ces jours-ci, mes connaissances sont un peu rouillées.

D'ailleurs, si quelqu'un pouvait valider mes réponses.. :wink:
Lem.

Eléphant du PHP | 91 Messages

10 mai 2007, 21:15

A ceci près, je crois me souvenir, que les "fonctions" du langage objet sont appelées "méthodes".
Ah, voilà la clé.

Maintenant que je sais que c'est du php "objet", j'arrive à trouver des infos et tutos, merci :wink:

lem
Eléphant du PHP | 108 Messages

10 mai 2007, 21:17

Tu peux aussi regarder les tutos à propos des classes, tout ça se rejoint.
Lem.

Mammouth du PHP | 693 Messages

10 mai 2007, 21:19

Moi même utilise pas la Programmation Orientié Objet, bien que je epnse avoir copris les bases (pas trouvé de solutions qui la requerait)

Pour savoir ce que fait chaque methode, il faut que tu cherche plus haut comment l'objet $cart est instancié (tu dios avior une ligne $cart= New Class avec Class le nom de la classe) puis chercher la définition de la classe.

Concernant le fait de savoir si l'objet a été modifié localement ou globalement, je dirais qu'on s'en fiche. EN revanche, si lors de la déclaration dela classe, on sait que certaines propriétés ont uniquement une utilisation local, on peut les définir ainsi à l'aide des mots mot clefs prived et protected (uniquement en PHP 5 je crois).
Prived signifie que la propriété ou la methode ne peux être appelé (ou modifié dans le cas d'ne propriété) que par des methodes de l'objet.
Protected signifie que la propriété peut être lu de l'exterieur, mais pas modifié (il me semble que ce mot ne s'utilise pas avec les méthodes)

Cependant, si tu débutes en PHP, je ne sais pas si la POO est bien adapté, car elle demande une rigueur qui ne laisse pas la place à l'approximation du débutant.

lem
Eléphant du PHP | 108 Messages

10 mai 2007, 21:20

Quelle belle réponse, je suis bluffée.
Lem.

Eléphant du PHP | 91 Messages

10 mai 2007, 21:42

Cependant, si tu débutes en PHP, je ne sais pas si la POO est bien adapté, car elle demande une rigueur qui ne laisse pas la place à l'approximation du débutant.
Non, vu comme je rame, définitivement, c'est pas adapté

Mais celui qui a codé OsCss semble bien aimer la POO, donc pas d'autre choix que d'aller au charbon :twisted:

Allez dans un mois, une 50 de posts ici et ma boutique en ligne, je serais un crack :lol:

Mammouth du PHP | 693 Messages

10 mai 2007, 21:56

Disons que la programmation objet est très adapté qaund on veut utiliser des variables autres que les variables de base, que ce soit des nombres complexes (je sais pas si ca te parle) ou des fichiers qu'on veut écrire dans un certain format.

Enfin, si tu te lance dans la programmation objet, je peux te donner un conseil. D'une part, ne modifie et n'appelle jamais les propriétés directements mais utilise des methodes, quitte à définir simplement une association basique ou à un retour de variable basique.

Pourquoi ? Tout simplmeent que si ensuite tu veux formater la variable avant de l'associer, il te suffit de modifier la methode, plutot que de rajouter à chaque faut que tu redéfini la propriété un bloc d'instructions, car avec cette méthode, tu es sur d'en oublier quelques uns, pour peu que ton script soit assez long.