IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Exécuter un script en fonction de l'argument.


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 1
    Par défaut Exécuter un script en fonction de l'argument.
    Bonsoir,

    J'ai re-codé la commande "ls" et "ls -la" d'UNIX avec php, tout fonctionne dans les deux cas, mon seul problème c'est que je n'arrive pas a trouver la bonne syntaxe pour que si $argv = "-la" alors j'affiche le résultat de mon script sinon j'affiche "erreur".

    Mon code est celui là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    if($argv == "-la")
    {
    // Mon code qui affiche le même résultat que la commande ls -la
    }
    else
    {
    echo "Erreur \n";
    }
    Mais voilà ça m'affiche toujours "Erreur", si je retire le else je n'ai aucune erreur mon php script.php -la n'envoi rien tout comme php script.php non plus.

    J'ai essayé de définir une variable comme "$var = -la" et si $argv == $var alors j'affiche le code mais ça ne marche pas. J'ai cherché a essayer avec $_SERVER[argv] mais toujours pas.

    J'ai regardé le manuel php, tous les forums mais rien trouvé... Si vous pouviez m'aidez car je suis perdu.

    Merci !

  2. #2
    Membre Expert
    Homme Profil pro
    Développeur C++
    Inscrit en
    Avril 2012
    Messages
    771
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2012
    Messages : 771
    Par défaut
    Bonsoir,

    doc argv, faire un var_dump($argv) t'aurait permit de voir ce que contient la variable $argv.

  3. #3
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    Les arguments fonctionnent exactement comme en C pour le mode CLI de PHP: $argv est un tableau dont le premier offset est le nom du script.

    Pour faire un parseur d'options correct, tu as deux choix:
    - utiliser la syntaxe getopt
    - le coder à la main (exemple ci dessous)

    A la main avec un switch c'est assez simple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    <?php
     
    if (PHP_SAPI !== 'CLI')
        exit('-- CLI ONLY --');
     
    // nom du script
    $script = array_shift($argv);
     
    $text['help'] = <<< EOF
    {$script} [options] <file>
     
        Ce que fait ton script
     
    Options:
     
        -h, --help        Affiche ce message
        -v, --verbose     Passe en mode verbeux
        -a                Passe en mode tous
        -tpl <template>   Utiliser le template <template>
        ...
     
    EOF;
     
    // valeur des options par défaut
    $options = array(
        'verbose'  => false,
        'all'      => false,
        'template' => null,
    );
     
    // le dernier paramètre doit être <file>
    $file = array_pop($argv);
     
    if (empty($file)) {
        echo "Aucun fichier fourni\n";
        exit(-1);
    }
     
    if (!file_exists($file)) {
        echo "$file n'existe pas\n";
        exit(-1);
    }
     
    // parser les arguments
    for ($i = 0, $cargs = count($argv); $i < $cargs; $i ++, $arg = $argv[$i]) {
     
        switch ($arg) {
            case '-h':
            case '--help':
                echo $text['help'];
                exit(0);
     
            case '-v':
            case '--verbose':
                $options['verbose'] = true;
                break;
     
            case '-a':
                $options['all'] = true;
                break;
     
            case '-tpl':
                $options['tpl'] = isset($argv[++$i]) ? $argv[$i] : null;
                break;
     
            // etc...
        }
    }
     
    // on peut commencer le boulot
     
    // ....

Discussions similaires

  1. Donner des variables comme argument à une exécution de script
    Par xgopox dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 05/10/2011, 18h49
  2. Exécuter script en fonction du groupe ?
    Par fredastair dans le forum Administration système
    Réponses: 11
    Dernier message: 16/05/2011, 23h29
  3. Réponses: 1
    Dernier message: 20/07/2009, 19h47
  4. Exécuter un Script ksh a partir d'une fonction ADA
    Par chaminette dans le forum Ada
    Réponses: 5
    Dernier message: 10/03/2009, 20h47
  5. [MySQL] exécuter un script php en commande linux : problème sur les fonctions mysql
    Par dr_octopus74 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 16/03/2007, 17h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo