Forum |  HardWare.fr | News | Articles | PC | Prix | S'identifier | S'inscrire | Shop Recherche
1762 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  ..  64  65  66  67  68  69
Page Suivante
Auteur Sujet :

blabla@php | faq et bonnes pratiques page 1

n°2373263
depart
Posté le 06-01-2021 à 22:59:47  profilanswer
 

Reprise du message précédent :

skeye a écrit :

 

possible via exec()/shell_exec(). Après il faudrait éventuellement reprendre ton bash pour qu'il prenne les paramètres dans ses arguments au lieu de via des prompts.


Et attention sur les paramètres autorisés !
Parce que
exec("script.sh".$_POST['input1']) ;
Ça peut faire mal si quelqu'un met "toto ; rm / -R" ou quelque chose du genre dans input1 :o

mood
Publicité
Posté le 06-01-2021 à 22:59:47  profilanswer
 

n°2374482
koskoz
They see me trollin they hatin
Posté le 26-01-2021 à 11:58:25  profilanswer
 

Je suis tombé sur (un bout de) la PR suivante :

 
Code :
  1. protected function findPhoneFromListOfStores(array $stores, string $code): ?string
  2. {
  3.    foreach ($stores as $store) {
  4.        $normalizedStore = [
  5.            'code' => $store['poiId'] ?? '',
  6.            'phone' => null,
  7.        ];
  8.  
  9.        if (isset($store['contacts']) && !empty($store['contacts'])) {
  10.            foreach ($store['contacts'] as $contact) {
  11.                if (isset($contact['type'])) {
  12.                    if ('PHONE' === $contact['type']) {
  13.                        $normalizedStore['phone'] = $contact['value'];
  14.                    }
  15.                }
  16.            }
  17.        }
  18.        $normalizedStore;
  19.  
  20.        if ($normalizedStore['code'] == $code) {
  21.            return $normalizedStore['phone'];
  22.        }
  23.    }
  24.  
  25.    return null;
  26. }
 

A partir de ça j'imagine la structure de donnée suivante :

 
Code :
  1. $stores = [
  2.     [
  3.         'poiId' => 'id1',
  4.         'contacts' => [
  5.             ['type' => 'PHONE', 'value' => 'phoneNumber'],
  6.             ['type' => 'EMAIL', 'value' => 'email'],
  7.         ]
  8.     ],
  9.     [
  10.         'poiId' => 'id2',
  11.         'contacts' => [
  12.             ['type' => 'PHONE', 'value' => 'phoneNumber2'],
  13.             ['type' => 'EMAIL', 'value' => 'email2'],
  14.         ]
  15.     ]
  16. ];
 

Je voulais la réécrire de manière plus propre et plus lisible mais je ne trouve pas ça beaucoup mieux :

 
Code :
  1. protected function findPhoneFromListOfStores(array $stores, string $code): ?string
  2. {
  3.    $store = array_filter($stores, function($store) {
  4.        return $store['poiId'] == $code
  5.    });
  6.    
  7.    $store = array_pop($store);
  8.  
  9.    if (!isset($store['contacts']) || empty($store['contacts'])) {
  10.        return null;
  11.    }
  12.  
  13.    $phone = array_filter($store['contacts'], function($contact) {
  14.        return $contact['type'] == 'PHONE'
  15.    });
  16.    
  17.    return array_pop($phone)['value'];
  18. }
 

Vous avez mieux à proposer :??:

Message cité 1 fois
Message édité par koskoz le 26-01-2021 à 12:24:56

---------------
Blabla Revival, le forum qui envoie du caca | Blog | Twitter | Stats
n°2374500
Ydalb
In Crêpes n' Cidre I Trust!
Posté le 26-01-2021 à 13:58:25  profilanswer
 

2 foreach imbriqués me semblerait plus lisible
EDIT : ha bah c'est la première soluce, j'étais sur phone j'ai lu en travers :o

 

EDIT2 : genre

 
Code :
  1. protected function findPhoneFromListOfStores(array $stores, string $code): ?string
  2. {
  3.    foreach ($stores as $store) {
  4.        if ($store['poiId'] === $code) {
  5.            if (isset($store['contacts']) && is_array($store['contacts'])) {
  6.                foreach ($store['contacts'] as $contact) {
  7.                    if (isset($contact['type'], $contact['value']) && $contact['type'] === 'PHONE') {
  8.                        return $contact['value'];
  9.                    }
  10.                }
  11.            }
  12.            break; // Si pas de doublon 'poiId' possible
  13.        }
  14.    }
  15.    return null;
  16. }

Message cité 1 fois
Message édité par Ydalb le 26-01-2021 à 14:06:42

---------------
:o
n°2374540
MaybeEijOr​Not
but someone at least
Posté le 26-01-2021 à 18:41:58  profilanswer
 

Réécrire la structure de données. :o


---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
n°2374554
depart
Posté le 27-01-2021 à 08:06:51  profilanswer
 

A première vue je dirai pareil : ajouter poiId dans la structure de données. Si dans l'absolu le numéro de poiID n'a pas grande importance, ça peut aussi directement être la position dans un tableau (0,1,2...)
 
La notion de "type" est aussi discutable
tu peux simplifier en faisant directement un tableau associatif :  
"poiId" => "1", "phone" => "123456890", "email" => "toto@toto.com" ...
l'accès sera nettement plus pratique.

n°2374556
ratibus
Posté le 27-01-2021 à 08:38:38  profilanswer
 

koskoz a écrit :

Je suis tombé sur (un bout de) la PR suivante :
 

Code :
  1. protected function findPhoneFromListOfStores(array $stores, string $code): ?string
  2. {
  3.    foreach ($stores as $store) {
  4.        $normalizedStore = [
  5.            'code' => $store['poiId'] ?? '',
  6.            'phone' => null,
  7.        ];
  8.  
  9.        if (isset($store['contacts']) && !empty($store['contacts'])) {
  10.            foreach ($store['contacts'] as $contact) {
  11.                if (isset($contact['type'])) {
  12.                    if ('PHONE' === $contact['type']) {
  13.                        $normalizedStore['phone'] = $contact['value'];
  14.                    }
  15.                }
  16.            }
  17.        }
  18.        $normalizedStore;
  19.  
  20.        if ($normalizedStore['code'] == $code) {
  21.            return $normalizedStore['phone'];
  22.        }
  23.    }
  24.  
  25.    return null;
  26. }


 
A partir de ça j'imagine la structure de donnée suivante :
 

Code :
  1. $stores = [
  2.     [
  3.         'poiId' => 'id1',
  4.         'contacts' => [
  5.             ['type' => 'PHONE', 'value' => 'phoneNumber'],
  6.             ['type' => 'EMAIL', 'value' => 'email'],
  7.         ]
  8.     ],
  9.     [
  10.         'poiId' => 'id2',
  11.         'contacts' => [
  12.             ['type' => 'PHONE', 'value' => 'phoneNumber2'],
  13.             ['type' => 'EMAIL', 'value' => 'email2'],
  14.         ]
  15.     ]
  16. ];


 
Je voulais la réécrire de manière plus propre et plus lisible mais je ne trouve pas ça beaucoup mieux :
 

Code :
  1. protected function findPhoneFromListOfStores(array $stores, string $code): ?string
  2. {
  3.    $store = array_filter($stores, function($store) {
  4.        return $store['poiId'] == $code
  5.    });
  6.    
  7.    $store = array_pop($store);
  8.  
  9.    if (!isset($store['contacts']) || empty($store['contacts'])) {
  10.        return null;
  11.    }
  12.  
  13.    $phone = array_filter($store['contacts'], function($contact) {
  14.        return $contact['type'] == 'PHONE'
  15.    });
  16.    
  17.    return array_pop($phone)['value'];
  18. }


 
Vous avez mieux à proposer :??:


Le poiId semble optionnel dans le code initial. Tu confirmes que c'est le cas ?
Est-ce que tu peux avoir plusieurs emails et/ou plusieurs phones par store  ? La structure que tu proposes semble indiquer que oui mais le code ne renvoie qu'un phone.  
Sans ces réponses difficiles de répondre.


---------------
Mon blog
n°2374571
koskoz
They see me trollin they hatin
Posté le 27-01-2021 à 10:23:42  profilanswer
 

Ydalb a écrit :

2 foreach imbriqués me semblerait plus lisible  


 
Ça se discute [:o_doc]  
 

MaybeEijOrNot a écrit :

Réécrire la structure de données. :o


 

depart a écrit :

A première vue je dirai pareil : ajouter poiId dans la structure de données.


 
Non mais vous vous doutez bien que si c'était possible je le ferais [:doc petrus]  
C'est le retour d'une API d'un partenaire avec lequel on bosse.
 
Je m'estime déjà heureux que ce ne soit pas du SOAP [:klem3i1]  
 

ratibus a écrit :


Le poiId semble optionnel dans le code initial. Tu confirmes que c'est le cas ?
Est-ce que tu peux avoir plusieurs emails et/ou plusieurs phones par store  ? La structure que tu proposes semble indiquer que oui mais le code ne renvoie qu'un phone.  
Sans ces réponses difficiles de répondre.


 
Aucune idée, j'en ai déduis la structure de données à partir du code :D


---------------
Blabla Revival, le forum qui envoie du caca | Blog | Twitter | Stats
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3  4  5  ..  64  65  66  67  68  69
Page Suivante

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-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR