PHP Objet (fct magiques "__" , interfaces, this/se

Mammouth du PHP | 19672 Messages

10 oct. 2005, 20:27

Pour répondre à Rei Itchido, voici comment on procède:
function __autoload($classe)
{
	include("../classes/".$classe.".php");
}
Si tu utilises un système de pseudo-frames par exemple, tu mets ça en haut de ta page index et tu t'inquiètes plus du reste, tu passes directement aux instanciations.

Condition de fonctionnement: tes fichiers contenant les classes doivent avoir impértivement le même nom que la classe elle-même. Donc une classe maclasse sera enregistrée dans un fichier maclasse.php
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 396 Messages

10 oct. 2005, 23:26

Merci pour l'explication.
Hyper pratique en effet :)

Eléphant du PHP | 281 Messages

12 déc. 2005, 13:54

Et pour information vu que personne ne l'a apparemment indiqué :

super sert à faire appel à l'objet mère dans le cas d'un héritage (c'est comme this sauf que t'accède aux champs, méthodes et constructeurs de classe dont hérite ta classe fille).

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

12 déc. 2005, 15:13

Pour revenir à la construction d'un objet :
la fonction _construct n'est pas une invention de PHP5 mais un commencement vers l'alignement avec les modèles objets de C et JAVA.
C utilisait un "construct" unique pour qualifier la classe à initialiser et charger en mémoire dans un objet.
C et Java permettent aussi de diversifier les point de construction en utilisant des fonctions de construction ayant le même nom que la classe mais qui respectent le concept de surcharge (pool de même fonctions avec des paramètres différents) ainsi le programmeur peut personnaliser l'initialisation de l'objet.
Par exemple (en JAVA):

Code : Tout sélectionner

class machin { //Constructeur de base public machin () { //initialisation sans paramètrage } public machin (int paramètre1) { //initialisation avec 1 paramètre } .... //Autant de machin constructeurs souhaité }
Le constructeur de base est solicité dans l'instanciation suivante :
machin truc = new machin();

Le constructeur à 1 paramètre est appelé par l'instanciation suivante :
le_machin_à_propriété1 = new machin(1);

Les constructeurs paramètrables permettent d'initialiser un certain nombre de propriétés de l'objet au moment de sa création pour simplifier la programmation.

En ce qui concerne, _ToString() et les Interfaces :
elles sont utilies pour les programmeurs qui travaillent en groupe ou sur une série de versions dont la compatibilité exige de respeter un standard.

_ToString :
  • peut être utilisée pour afficher la documentation de la classe (son mode d'emploi)
Les interfaces
  • spécifient un certain nombre de fonctions dont les signatures sont fixées par le cahier des charges. Fonctions que doivent respecter toutes les classes qui utilisent ces interfaces. On parle d'implémentation de fonctionnalités pédéfinies.
    Les interfaces comme leurs noms l'indique permettent de connecter plusieurs classes (les rendre compatibles)

    Exemple :
    Une interface evenementielle qui fixent les fonctions nécéssaires pour gérér le clavier et la souris dans un programme de dialogue H/M
    Pour simplifier le développement toutes les classes conversationnelles doivent implémenter cette interface et décrire le comportement attendu des ses fonctions.
    Ces classes s'entendent alors sur un même jargon de fonctions evennementielles comme CLICK(int X, int Y,...), DBLCLICK(int X, int Y,...), KEYPRESS(int KEYCODE), MOUSEMOVE(int X, int Y,...) ....

    Ceci dit, toute classe qui implémente des interfaces, doit écrire le contenu fonctionnelle des fonctions héritées. Ce qui est normal puisqu'une interface partage seulement les signatures des fonctions.
    On dit que les interface sont des classes abstraites où les fonction ne sont pas directement exécutables.

    Par-ailleurs, les interfaces permettent de mettre en oeuvre l'héritage multiple. Puisqu'une classe n'hérite que d'une seule super-classe mais peut hériter de plusieurs interfaces.
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène