CODEC D'OBFUSCATION DE LIEN HTML (PHP5)

Signaler
Messages postés
17287
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
-
Messages postés
487
Date d'inscription
dimanche 5 octobre 2003
Statut
Membre
Dernière intervention
1 septembre 2011
-
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/49615-codec-d-obfuscation-de-lien-html-php5

Messages postés
487
Date d'inscription
dimanche 5 octobre 2003
Statut
Membre
Dernière intervention
1 septembre 2011

correction apportée pour le terme PHP5.

Je ne savais pas que l'on devait utiliser les fonctions publiques pour nettoyer les variables et ainsi proteger les fonction descendante... c'est bon à savoir...

Je cherche de bon ouvrages, mais ils sont denrée rare car beaucoup se targuent d'être complets mais après lecture, c'est beaucoup de vent... mais je suis preneur...

Merci
Messages postés
4297
Date d'inscription
samedi 19 janvier 2002
Statut
Modérateur
Dernière intervention
9 janvier 2013
31
"en quoi le fait d'avoir toutes mes fonctions publiques soit gênant pour l'encapsulation ?"
Dans l'absolu, ce n'est pas un problème. Dans le cas présent, si la classe ne peut pas contrôler les valeurs qu'on lui injecte par le biais des propriétés publiques, alors il faura blinder chaque méthode.
D'autre part, on ne peut pas comparer la programmation en assembleur et la POO. Si la POO a été inventée c'est, entre autres, pour faciliter la réutilisation (ce qui n'est pas le cas de l'assembleur) et, le plus important à mes yeux, pour que le développeur n'expose pas à l'extérieur de la classe les données sensibles. C'est bien pour cela qu'on été inventées les portées public, protected et private. Pour que l'accès aux propriétés de ta classe soit maîtrisé, l'utilisation d'accesseurs (les fameux getters et setters) est chaudement recommandé. Si tu as un peu de temps, je te recommande la lecture d'ouvrages traitant de ce sujet.
Et je suis d'accord avec toi pour reconnaitre que la notion en PHP4 était un peu légère.
Dernier point, tu devrais préciser que ton code nécessite PHP5 car le constructeur __construct ne sera pas reconnu dans le cas de PHP4.
Cordialement
Messages postés
487
Date d'inscription
dimanche 5 octobre 2003
Statut
Membre
Dernière intervention
1 septembre 2011

Bonjour.
C'est clair, il faudrait normaliser tout ça.

En fait, j'utilise les variables internes de l'objet comme on utilise le stack en assembleur et les fonctions sont les interruptions. De ce fait, mes variables sont plus des paramètres d'appels qu'autre chose. Donc dans ce sens, il faut qu'elles soient publiques.

Il y a ainsi une zone commune à tout l'objet (CR,CX,DS,etc. en assembleur) dans laquelle on vient positionner certaines valeurs avant de déclencher la fonction (interruption). Cela présente l'avantage de ne pas avoir a définir en dur les paramètres d'appels des procédures. Comme ça, si je modifie le code de la procédure lors des mises à jour, je n'ai pas à modifier les appels dans les aplis qui dépendent de cet objet. L'important est de bien initialiser les variables lors de la création de l'objet. Comme ça, si une variable n'est pas positionnée avant l'appel (version antérieur d'appel) la fonction fait son travail sans sourcilier. L'intérêt est plus flagrant dans le cas ou l'on veux supprimer un paramètre d'appel. Il faudrait alors reprendre tous les appels pour les modifiers en correspondance.

Maintenant, il est vrais que certaines fonctions pourraient être privées, mais la POO en PHP5 est un nouveau domaine d'activités pour moi (mes clients étaient en PHP4) et je ne gère pas encore assez bien toute la terminologie qui lui est associée.

Question:
en quoi le fait d'avoir toutes mes fonctions publiques soit gênant pour l'encapsulation?

Merci
Messages postés
4297
Date d'inscription
samedi 19 janvier 2002
Statut
Modérateur
Dernière intervention
9 janvier 2013
31
Bonjour à tous.
Développer une classe où toutes les méthodes et les propriétés sont publiques revient à coder des fonctions classiques et à utiliser des variables globales. Où se situe l'intérêt alors si on peut, de l'extérieur de la classe, injecter n'importe quoi comme valeur dans les propriétés ?
L'intérêt de la POO n'est-il pas, entre autres, de permettre l'encapsulation ?
Sinon, l'idée de départ est bonne.
Messages postés
487
Date d'inscription
dimanche 5 octobre 2003
Statut
Membre
Dernière intervention
1 septembre 2011

Que ma source avait été désactivée pour une raison inconnue.
J'ai sauté l'étape 'terminer' pour arriver directement à ma sources publiée mais désactivée...
c'est pour ça que j'ai contacté malalam cette nuit.
Je pensait qu'il t'avait transmit le problème.
Afficher les 8 commentaires