Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2307 connectés 

 


Pour ou contre du changement sur le topic ?


 
35.7 %
 5 votes
1.  Oui, faq / bonnes pratiques + blabla@php
 
 
0.0 %
        0 vote
2.  Oui, blabla@php uniquement
 
 
7.1 %
 1 vote
3.  Ce topic mérite la poubelle. Pauvre poubelle
 
 
21.4 %
 3 votes
4.  Non, ce topic reste tel quel
 
 
35.7 %
 5 votes
5.  Obiwan n'aime pas le php
 

Total : 16 votes (2 votes blancs)
Ce sondage est clos, vous ne pouvez plus voter
 Mot :   Pseudo :  
  Aller à la page :
 
 Page :   1  2  3  4  5  ..  38  39  40  ..  66  67  68  69  70  71
Auteur Sujet :

blabla@php | faq et bonnes pratiques page 1

n°1990744
ratibus
Posté le 06-05-2010 à 10:51:46  profilanswer
 

Reprise du message précédent :

skeye a écrit :

Je hais ce langage, à chaque fois je me fais avoir par ça :
 

Code :
  1. class A{
  2.  private $toto;
  3.  
  4.  function getToto(){
  5.     return $this->toto
  6.  }
  7. }
  8.  
  9. class B{
  10.  
  11. function __construct(){
  12.   $this->toto = 'foo';
  13. }
  14. }
  15.  
  16. $bar = new B;
  17.  
  18. echo $bar->getToto(); // NULL


 
[:moule_bite]
 
Il pourrait pas péter au moins un warning ce con??????????? [:mechant]


private ça pue du cul :o


---------------
Mon blog
mood
Publicité
Posté le 06-05-2010 à 10:51:46  profilanswer
 

n°1990751
theredled
● REC
Posté le 06-05-2010 à 10:57:26  profilanswer
 

+1 jamais vu l'intérêt quel que soit le langage :??:


---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
n°1990752
skeye
Posté le 06-05-2010 à 10:57:27  profilanswer
 

ratibus a écrit :


private ça pue du cul :o


 
Question d'habitude...et ce con de langage devrait prévenir au lieu de faire n'importe-quoi, putain...[:mechant]


---------------
Can't buy what I want because it's free -
n°1990754
skeye
Posté le 06-05-2010 à 10:58:45  profilanswer
 

theredled a écrit :

+1 jamais vu l'intérêt quel que soit le langage :??:


Il arrive que tu ne veuilles pas qu'une classe fille puisse toucher à une variable membre...[:skeye]
Si tu commences à raisonner comme ça tu finis par penser que c'est aussi bien de tout mettre en public...[:dawao]


---------------
Can't buy what I want because it's free -
n°1990762
theredled
● REC
Posté le 06-05-2010 à 11:01:16  profilanswer
 

skeye a écrit :


Il arrive que tu ne veuilles pas qu'une classe fille puisse toucher à une variable membre...[:skeye]


t'as un exemple la comme ça ?


---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
n°1990769
skeye
Posté le 06-05-2010 à 11:09:30  profilanswer
 

theredled a écrit :


t'as un exemple la comme ça ?


 
Autant que tu veux...pour moi la bonne réponse à mon problème n'est pas de passer $toto en protected, hein.[:petrus75]
$toto appartient à la classe A. Si à un instant toto devient une valeur calculée ça n'a pas à impacter la classe B.
La solution est donc d'implémenter setToto() dans la classe A, et de l'utiliser dans la classe B au lieu d'essayer d'attaquer directement la variable.
D'ailleurs il ne faudrait pas toucher à $toto dans la classe A en dehors des getter et setter non plus, hein...


---------------
Can't buy what I want because it's free -
n°1990773
masklinn
í dag viðrar vel til loftárása
Posté le 06-05-2010 à 11:12:08  profilanswer
 

skeye a écrit :


Il arrive que tu ne veuilles pas qu'une classe fille puisse toucher à une variable membre...[:skeye]
Si tu commences à raisonner comme ça tu finis par penser que c'est aussi bien de tout mettre en public...[:dawao]


Oui :o Ou tout en protected, comme en ruby :o


---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
n°1990775
theredled
● REC
Posté le 06-05-2010 à 11:12:41  profilanswer
 

skeye a écrit :


 
Autant que tu veux...pour moi la bonne réponse à mon problème n'est pas de passer $toto en protected, hein.[:petrus75]

J'ai pas dit ça :o

skeye a écrit :

$toto appartient à la classe A. Si à un instant toto devient une valeur calculée ça n'a pas à impacter la classe B.
La solution est donc d'implémenter setToto() dans la classe A, et de l'utiliser dans la classe B au lieu d'essayer d'attaquer directement la variable.
D'ailleurs il ne faudrait pas toucher à $toto dans la classe A en dehors des getter et setter non plus, hein...


Ouais, valable si il y a bien les getters et setters correspondants.
 
Mais si c'est pas le cas ça peut être ultra relou parce que ça limite grave les surcharges possibles.


---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
n°1990776
skeye
Posté le 06-05-2010 à 11:12:44  profilanswer
 

masklinn a écrit :


Oui :o Ou tout en protected, comme en ruby :o


Tout en private§§§ [:banzai]


---------------
Can't buy what I want because it's free -
n°1990781
skeye
Posté le 06-05-2010 à 11:13:39  profilanswer
 

theredled a écrit :


Ouais, valable si il y a bien les getters et setters correspondants.
 
Mais si c'est pas le cas ça peut être ultra relou parce que ça limite grave les surcharges possibles.


 
Une variable ne devant pas être utilisée autrement que via les getter/setter ce problème n'existe pas.[:cosmoschtroumpf]


---------------
Can't buy what I want because it's free -
mood
Publicité
Posté le 06-05-2010 à 11:13:39  profilanswer
 

n°1990783
theredled
● REC
Posté le 06-05-2010 à 11:15:31  profilanswer
 

skeye a écrit :

 

Une variable ne devant pas être utilisée autrement que via les getter/setter ce problème n'existe pas.[:cosmoschtroumpf]


Fais péter ton usine à gaz :o

 

Une classe c'est une boîte noire donc à l'intérieur on y fait ce qu'on veut, donc au plus simple :o

Message cité 2 fois
Message édité par theredled le 06-05-2010 à 11:15:44

---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
n°1990787
skeye
Posté le 06-05-2010 à 11:19:19  profilanswer
 

theredled a écrit :


Fais péter ton usine à gaz :o
 
Une classe c'est une boîte noire donc à l'intérieur on y fait ce qu'on veut, donc au plus simple :o


 
Si tu permets un accès direct aux variables tu fais des trous dans la boite noire.[:jagstang]


---------------
Can't buy what I want because it's free -
n°1990788
masklinn
í dag viðrar vel til loftárása
Posté le 06-05-2010 à 11:19:36  profilanswer
 

skeye a écrit :


Tout en private§§§ [:banzai]


:/

skeye a écrit :

Une variable ne devant pas être utilisée autrement que via les getter/setter ce problème n'existe pas.[:cosmoschtroumpf]


Sauf que tu te retrouves à créer des getter/setter potentiellement protected pour toutes les variables internes de ton objet, au cas où une classe enfant en ait besoin :(


---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
n°1990797
skeye
Posté le 06-05-2010 à 11:22:38  profilanswer
 

masklinn a écrit :


Sauf que tu te retrouves à créer des getter/setter potentiellement protected pour toutes les variables internes de ton objet, au cas où une classe enfant en ait besoin :(


 
Bah après ça dépend de ce que tu veux pouvoir faire de ta classe, hein...mais perso protected sur des variables je trouve pas de cas d'utilisation justifié...soit tu peux vouloir y accéder dans une classe fille et il faut alors passer par des getter/setter pour éviter de tout péter au moindre refactoring de la classe mère, soit tu en as pas besoin et dans ce cas private est parfait...[:jagstang]


---------------
Can't buy what I want because it's free -
n°1990800
theredled
● REC
Posté le 06-05-2010 à 11:23:40  profilanswer
 

skeye a écrit :


 
Si tu permets un accès direct aux variables tu fais des trous dans la boite noire.[:jagstang]


Accès direct de l'intérieur seulement [:spamafote] pour moi une classe fille et une classe parente c'est la même boîte noire.


---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
n°1990805
skeye
Posté le 06-05-2010 à 11:27:39  profilanswer
 

theredled a écrit :


Accès direct de l'intérieur seulement [:spamafote]


 
Même combat, si ta variable devient calculée tu l'as dans le cul à devoir revoir tout le code de ta classe pour vérifier les accès directs...alors qu'avec des méthodes d'accès tu n'as que celles-là à revoir et c'est réglé.
 

theredled a écrit :

pour moi une classe fille et une classe parente c'est la même boîte noire.


 
wait, wat?[:pingouino dei]
 
tu bosses sous symfony, non?
Il se passerait quoi si tu avais accès direct aux variables d'une des classes du framework que tu étends, et que lors d'une mise à jour elle a disparu? ça casse ton code et tant pis?[:pingouino]
C'est à l'équipe qui dev symfony de recoder tes classes, aussi?[:petrus dei]


---------------
Can't buy what I want because it's free -
n°1990808
skeye
Posté le 06-05-2010 à 11:32:02  profilanswer
 

(mais sinon oui j'ai tendance à me faire chier à coder des getter/setters sans intérêt...je prie pour l'apparition prochaine d'un wizard d'ajout de variable membre dans les IDE php [:moule_bite])


---------------
Can't buy what I want because it's free -
n°1990811
skeye
Posté le 06-05-2010 à 11:34:04  profilanswer
 

 

ça m'obligerait à faire hériter toutes mes classes de ce machin, c'est un poil pénible...l'idée ce serait que php fasse ça tout seul (quitte à ajouter un switch dans le php.ini ou je ne sais quoi), mais oui.[:romf]


Message édité par skeye le 06-05-2010 à 11:34:12

---------------
Can't buy what I want because it's free -
n°1990814
theredled
● REC
Posté le 06-05-2010 à 11:36:18  profilanswer
 

skeye a écrit :


wait, wat?[:pingouino dei]

 

tu bosses sous symfony, non?
Il se passerait quoi si tu avais accès direct aux variables d'une des classes du framework que tu étends, et que lors d'une mise à jour elle a disparu? ça casse ton code et tant pis?[:pingouino]


C'est le cas :D et c'est parfait pour surcharger les comportements à volonté.

 

Perso j'ai jamais eu de pb alors que je surcharge tout et que j'ai passé 3 versions majeures. Ils doivent faire gaffe je suppose (justement pour les protected ?).

Message cité 1 fois
Message édité par theredled le 06-05-2010 à 11:40:44

---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
n°1990818
skeye
Posté le 06-05-2010 à 11:40:09  profilanswer
 

theredled a écrit :


C'est le cas :D et c'est parfait pour surcharger les comportements à volonté.
 
Perso j'ai jamais eu de pb alors que je surcharge tout et que j'ai passé 3 versions majeures. Ils doivent faire gaffe je suppose.


 
Bah pour moi c'est des mauvaises pratiques.
Remarque grâce à la magie de php ils peuvent toujours faire disparaitre la variable mais récupérer le truc à coups de __get et __set... [:everything4free]


---------------
Can't buy what I want because it's free -
n°1990823
theredled
● REC
Posté le 06-05-2010 à 11:43:27  profilanswer
 


Relis la conversation, skeye est de ton côté :o


Message édité par theredled le 06-05-2010 à 11:43:58

---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
n°1990827
skeye
Posté le 06-05-2010 à 11:46:40  profilanswer
 


 
Relis-moi, ce que je trouve dégueu c'est de distribuer du code destiné à être étendu (genre un framework), en laissant des accès directs aux variables internes au lieu de getter/setter.
 
 
Le [:everything4free] n'était pas particulièrement pour __get et __set cette fois, mais plutôt pour l'utilisation possible que je suggérais.
Ne pas mettre de getter/setter explicites, et si la variable doit être enlevée rattraper le coup justement via des accesseurs génériques c'est particulièrement paradoxal, et moche...non?[:petrus dei]


---------------
Can't buy what I want because it's free -
n°1990830
theredled
● REC
Posté le 06-05-2010 à 11:47:31  profilanswer
 

Fin bon je vois mieux l'utilité de private du coup, à petite dose ça peut être pratique ouais.

 

Merci bonsoir [:o_doc]


Message édité par theredled le 06-05-2010 à 11:48:20

---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
n°1990845
theredled
● REC
Posté le 06-05-2010 à 11:55:42  profilanswer
 

skeye a écrit :


 
Relis-moi, ce que je trouve dégueu c'est de distribuer du code destiné à être étendu (genre un framework), en laissant des accès directs aux variables internes au lieu de getter/setter.
 


Après, je vais ptet dire une connerie, mais à l'échelle d'un framework entier faire ça tout le temps ça peut jouer sur les perfs non ?


---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
n°1990852
skeye
Posté le 06-05-2010 à 12:00:03  profilanswer
 

theredled a écrit :


Après, je vais ptet dire une connerie, mais à l'échelle d'un framework entier faire ça tout le temps ça peut jouer sur les perfs non ?


 
Tu préfères quoi, des perfs OK et un framework dont les mises à jour risquent de faire exploser la moitié des applis qui s'appuient dessus, ou un framework moins performant avec des mises à jour faciles?[:autobot]


---------------
Can't buy what I want because it's free -
n°1990854
theredled
● REC
Posté le 06-05-2010 à 12:03:27  profilanswer
 

skeye a écrit :

 

Tu préfères quoi, des perfs OK et un framework dont les mises à jour risquent de faire exploser la moitié des applis qui s'appuient dessus, ou un framework moins performant avec des mises à jour faciles?[:autobot]


Solution 3, un framework performant, flexible, mais dont les devs sont un peu plus limités par la compatibilité.

Message cité 1 fois
Message édité par theredled le 06-05-2010 à 12:03:55

---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
n°1990859
skeye
Posté le 06-05-2010 à 12:10:18  profilanswer
 

theredled a écrit :


Solution 3, un framework performant, flexible, mais dont les devs sont un peu plus limités par la compatibilité.


Pour ça il faut un truc très bien documenté, et une très grande rigueur du coté des devs du framework.
Disons qu'au lieu de forcer le framework à rester compatible avec les applis qui l'utilisent, tu demandes aux développeurs de faire en sorte que ce soit le cas...c'est un risque à évaluer.[:jagstang]


---------------
Can't buy what I want because it's free -
n°1990860
___alt
Posté le 06-05-2010 à 12:10:32  profilanswer
 

skeye a écrit :

Même combat, si ta variable devient calculée tu l'as dans le cul à devoir revoir tout le code de ta classe pour vérifier les accès directs...alors qu'avec des méthodes d'accès tu n'as que celles-là à revoir et c'est réglé.


 
Y'a pas de bonne réponse universelle.
Quand tu sais pertinemment comment va se comporter ta variable, tu t'emmerdes pas avec une paire inutile de getter/setters sur un truc protected.


---------------
TRIPS RIGHT BUNCH F SHUTTLE TOM AND JERRY RIGHT YELLOW
n°1990868
theredled
● REC
Posté le 06-05-2010 à 12:26:18  profilanswer
 

skeye a écrit :


Pour ça il faut un truc très bien documenté,


Pas plus qu'avec des setters  

skeye a écrit :

et une très grande rigueur du coté des devs du framework.


Bof, "tout ce qui est protected ne doit pas bouger" et hop.


---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
n°1990909
flo850
moi je
Posté le 06-05-2010 à 14:04:07  profilanswer
 

theredled a écrit :


Fais péter ton usine à gaz :o

 

Une classe c'est une boîte noire donc à l'intérieur on y fait ce qu'on veut, donc au plus simple :o


tant que je n'utilisais pas symfony, l'id de mes objet était en private avec un get défini explicitement. hors de question de permettre la modification de l 'exterieur

 

le reste était en protected + une fonction__call des familles qui va bien


Message édité par flo850 le 06-05-2010 à 14:04:20
n°1991024
nraynaud
lol
Posté le 06-05-2010 à 18:42:34  profilanswer
 

hep les gars, j'ai un file_exists() qui renvoie false, mais le fichier existe bien, et sqlite arrive bien à écrire dedans.


---------------
trainoo.com, c'est fini
n°1991026
skeye
Posté le 06-05-2010 à 18:50:19  profilanswer
 

nraynaud a écrit :

hep les gars, j'ai un file_exists() qui renvoie false, mais le fichier existe bien, et sqlite arrive bien à écrire dedans.


sur le réseau?


---------------
Can't buy what I want because it's free -
n°1991028
nraynaud
lol
Posté le 06-05-2010 à 18:53:31  profilanswer
 

non, dans c:\windows\temp\test.db


---------------
trainoo.com, c'est fini
n°1991029
nraynaud
lol
Posté le 06-05-2010 à 18:54:02  profilanswer
 

ça ne se produit que sur une seule machine, toutes les autres ça marche.


---------------
trainoo.com, c'est fini
n°1991032
skeye
Posté le 06-05-2010 à 18:58:05  profilanswer
 

nraynaud a écrit :

ça ne se produit que sur une seule machine, toutes les autres ça marche.


L'utilisateur qui exécute apache n'a pas les droits de lecture sur le répertoire?


---------------
Can't buy what I want because it's free -
n°1991035
nraynaud
lol
Posté le 06-05-2010 à 19:12:36  profilanswer
 

skeye a écrit :


L'utilisateur qui exécute apache n'a pas les droits de lecture sur le répertoire?


c'est IIS (PHP fastCGI) et sqlite (par PDO par doctrine) arrive à créer le fichier dedans (et on parle de windows\temp).  
C'est possible d'avoir écriture et pas lecture sous windows ?


---------------
trainoo.com, c'est fini
n°1991036
skeye
Posté le 06-05-2010 à 19:17:38  profilanswer
 

nraynaud a écrit :


c'est IIS (PHP fastCGI) et sqlite (par PDO par doctrine) arrive à créer le fichier dedans (et on parle de windows\temp).  
C'est possible d'avoir écriture et pas lecture sous windows ?


Aucune idée, je suppose que oui...t'as testé un listage du répertoire en php pour voir?


---------------
Can't buy what I want because it's free -
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3  4  5  ..  38  39  40  ..  66  67  68  69  70  71

Aller à :
Ajouter une réponse
 

Sujets relatifs
Problème pour une mise en page sous forme de tableauAfficher sur une page web directement le resultat d'une autre page web
[PHP] Fonction include plus rapide qu'un bout de code dans la page ?Ouvrir un fichier HTML en fin de page
[Résolu] Expirer la cache au niveau de la pageexecuter une page php sans rien afficher
inserer dans ma page wikiControler le changement de page
Certificat SSL a valider pour chaque élément de pageinstallé un mdp sur une page web avec Namo
Plus de sujets relatifs à : blabla@php | faq et bonnes pratiques page 1


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)