CODEC D'OBFUSCATION DE LIEN HTML (PHP5)

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 - 24 mars 2009 à 07:54
masternico Messages postés 487 Date d'inscription dimanche 5 octobre 2003 Statut Membre Dernière intervention 1 septembre 2011 - 2 avril 2009 à 10:07
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

masternico Messages postés 487 Date d'inscription dimanche 5 octobre 2003 Statut Membre Dernière intervention 1 septembre 2011
2 avril 2009 à 10:07
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
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
2 avril 2009 à 09:25
"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
masternico Messages postés 487 Date d'inscription dimanche 5 octobre 2003 Statut Membre Dernière intervention 1 septembre 2011
2 avril 2009 à 08:57
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
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
1 avril 2009 à 21:27
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.
masternico Messages postés 487 Date d'inscription dimanche 5 octobre 2003 Statut Membre Dernière intervention 1 septembre 2011
24 mars 2009 à 09:50
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.
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
24 mars 2009 à 09:35
un message d'erreur ?

quel message d'erreur ?
masternico Messages postés 487 Date d'inscription dimanche 5 octobre 2003 Statut Membre Dernière intervention 1 septembre 2011
24 mars 2009 à 09:32
Merci.
Ce qui m'étonne, c'est que je n'ai même pas eu le loisir d'atteindre l'étape mots clés. C'est directement après avoir appuyé sur prévisualisation que j'ai eu le message d'erreur.

En tout cas merci encore d'avoir validé la publication de ma source
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
24 mars 2009 à 07:54
Lorsque tu ajoutes une source sur le site, il te faut confirmer son ajout pour qu'elle soit visible par tous...

Ajout => Description + Fichiers + etc. => Prévisualisation => Mot clés => Terminé
Rejoignez-nous