0
votes

Quand devrions-nous attribuer une valeur à une nouvelle variable?

Compte tenu du code suivant:

$userStatus = $myObj->userStatus;
//Some Code HEre

AND (myTable.field_1 IN ('" . implode("','", $userStatus) . "')
  OR myTable.field_2 IN ('" . implode("','", $userStatus) . "')
  OR myTable.field_3 IN ('" . implode("','", $userStatus) . "'))";


1 commentaires

Dry: $ USStatus = implorez ("'', '", $ myObj-> userstatus);


4 Réponses :


-2
votes

La deuxième façon est la voie à suivre. Beaucoup mieux à lire et si vous devez changer quelque chose, c'est plus facile à maintenir.

Je ne peux pas dire quelque chose en fait basé sur la performance, mais je pense que l'option 1) fonctionnera un peu plus vite mais aussi longtemps que vous ne travaillez pas sur des projets vraiment performants, la différence ne doit pas être importante.


0 commentaires

1
votes

En tant que Général pratique, je n'attribue pas une nouvelle variable à moins que je ne l'utilise réellement de manière à ce que cela le nécessite. Il y a bien sûr des exceptions à cela, où la lisibilité serait considérablement améliorée. Je ne pense pas que votre exemple rencontre ce seuil du tout.

En fait, je pense que votre exemple spécifique, attribuant ici une autre variable ici le rend potentiellement pas clair ce que USERStatus est. C'est une autre chose de garder une trace de lors de l'écrémage du code.

Certainement, il n'y a rien de "moche" sur $ myObj-> userstatus .

Dans tous les cas, il y a d'autres problèmes ici. Vous ne devez jamais concaténer des données directement dans une requête SQL. Il faut s'échapper au minimum, mais les paramètres contraignants sont meilleurs. Sinon, vous vous ouvrez à une multitude de bugs et de problèmes de sécurité.

Si vous avez utilisé des paramètres nommés, vous trouverez que vous n'utiliseriez que $ myObj-> userstatus une fois de toute façon.


0 commentaires

3
votes

Premièrement, vous pouvez précomputer le implorer ("'', '", $ USStatus) dans une variable. De cette façon, vous n'avez pas à répéter la fonction d'imploration plusieurs fois. C'est à la fois plus lisible et a une meilleure performance.

Deuxièmement, la chose la plus importante est que vous traitez de vos données dans le mauvais sens! Ce type de calcul doit être effectué dans votre base de données. Par exemple, vous avez converti la relation multicolore à une autre en une à plusieurs. Cela a rendu votre code moins lisible et moins efficace.

Troisième, ne pas trop ingénierir votre code. Si vous faites une opération, faites-la dans une variable pour être plus lisible plutôt que plus performante. La performance est généralement dépendante de l'algorithme, de la structure et de la conception non pas en définissant des variables.


0 commentaires

0
votes

Vous devez essayer le code suivant:

$userStatus = $myObj->userStatus;
//Some Code HEre

$userStatusimp = implode(',', $userStatus);

AND (myTable.field_1 IN ('" .$userStatusimp. "')
  OR myTable.field_2 IN ('" .$userStatusimp . "')
  OR myTable.field_3 IN ('" .$userStatusimp. "'))";


0 commentaires