Examples

Examples – various code examples

Basic example

Basic example

<?php
// Include the Console_CommandLine package.
require_once 'Console/CommandLine.php';

// create the parser
$parser = new Console_CommandLine(array(
    
'description' => 'zip given files using the php zip module.',
    
'version'     => '1.0.0'
));

// add an option to make the program verbose
$parser->addOption(
    
'verbose',
    array(
        
'short_name'  => '-v',
        
'long_name'   => '--verbose',
        
'action'      => 'StoreTrue',
        
'description' => 'turn on verbose output'
    
)
);

// add an option to delete original files after zipping
$parser->addOption(
    
'delete',
    array(
        
'short_name'  => '-d',
        
'long_name'   => '--delete',
        
'action'      => 'StoreTrue',
        
'description' => 'delete original files after zip operation'
    
)
);

// add the files argument, the user can specify one or several files
$parser->addArgument(
    
'files',
    array(
        
'multiple' => true,
        
'description' => 'list of files to zip separated by spaces'
    
)
);

// add the zip file name argument
$parser->addArgument('zipfile', array('description' => 'zip file name'));

// run the parser
try {
    
$result $parser->parse();
    
// write your program here...
    
print_r($result->options);
    
print_r($result->args);
} catch (
Exception $exc) {
    
$parser->displayError($exc->getMessage());
}
?>

Basic example using an XML definition file

Basic example (XML file)

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<command>
    <description>zip given files using the php zip module.</description>
    <version>1.0.0</version>
    <option name="verbose">
        <short_name>-v</short_name>
        <long_name>--verbose</long_name>
        <description>turn on verbose output</description>
        <action>StoreTrue</action>
    </option>
    <option name="delete">
        <short_name>-d</short_name>
        <long_name>--delete</long_name>
        <description>delete original files after zip operation</description>
        <action>StoreTrue</action>
    </option>
    <argument name="files">
        <description>a list of files to zip together</description>
        <multiple>true</multiple>
    </argument>
    <argument name="zipfile">
        <description>path to the zip file to generate</description>
    </argument>
</command>

Basic example (PHP file)

<?php
// Include the Console_CommandLine package.
require_once 'Console/CommandLine.php';

// create the parser from xml file
$xmlfile dirname(__FILE__) . DIRECTORY_SEPARATOR 'ex2.xml';
$parser Console_CommandLine::fromXmlFile($xmlfile);


// run the parser
try {
    
$result $parser->parse();
    
// todo: your program here ;)
    
print_r($result->options);
    
print_r($result->args);
} catch (
Exception $exc) {
    
$parser->displayError($exc->getMessage());
}
?>

Sub-commands example

Sub-commands example

<?php
// Include the Console_CommandLine package.
require_once 'Console/CommandLine.php';

// create the parser
$parser = new Console_CommandLine(array(
    
'description' => 'A great program that can foo and bar !',
    
'version'     => '1.0.0'
));

// add a global option to make the program verbose
$parser->addOption('verbose', array(
    
'short_name'  => '-v',
    
'long_name'   => '--verbose',
    
'action'      => 'StoreTrue',
    
'description' => 'turn on verbose output'
));

// add the foo subcommand
$foo_cmd $parser->addCommand('foo', array(
    
'description' => 'output the given string with a foo prefix'
));
$foo_cmd->addOption('reverse', array(
    
'short_name'  => '-r',
    
'long_name'   => '--reverse',
    
'action'      => 'StoreTrue',
    
'description' => 'reverse the given string before echoing it'
));
$foo_cmd->addArgument('text', array(
    
'description' => 'the text to output'
));

// add the bar subcommand
$bar_cmd $parser->addCommand('bar', array(
    
'description' => 'output the given string with a bar prefix'
));
$bar_cmd->addOption('reverse', array(
    
'short_name'  => '-r',
    
'long_name'   => '--reverse',
    
'action'      => 'StoreTrue',
    
'description' => 'reverse the given string before echoing it'
));
$bar_cmd->addArgument('text', array(
    
'description' => 'the text to output'
));

// run the parser
try {
    
$result $parser->parse();
    if (
$result->command_name) {
        
$st $result->command->options['reverse'
            ? 
strrev($result->command->args['text'])
            : 
$result->command->args['text'];
        if (
$result->command_name == 'foo') { 
            echo 
"Foo says: $st\n";
        } else if (
$result->command_name == 'bar') {
            echo 
"Bar says: $st\n";
        }
    }
} catch (
Exception $exc) {
    
$parser->displayError($exc->getMessage());
}

?>

Sub-commands example using an XML definition file

Sub-commands example (XML file)

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<command>
    <description>A great program that can foo and bar !</description>
    <version>1.0.0</version>
    <option name="verbose">
        <short_name>-v</short_name>
        <long_name>--verbose</long_name>
        <description>turn on verbose output</description>
        <action>StoreTrue</action>
    </option>
    <command>
        <name>foo</name>
        <description>output the given string with a foo prefix</description>
        <option name="reverse">
            <short_name>-r</short_name>
            <long_name>--reverse</long_name>
            <description>reverse the string before echoing it</description>
            <action>StoreTrue</action>
        </option>
        <argument name="text">
            <description>the text to output</description>
        </argument>
    </command>
    <command>
        <name>bar</name>
        <description>output the given string with a bar prefix</description>
        <option name="reverse">
            <short_name>-r</short_name>
            <long_name>--reverse</long_name>
            <description>reverse the string before echoing it</description>
            <action>StoreTrue</action>
        </option>
        <argument name="text">
            <description>the text to output</description>
        </argument>
    </command>
</command>

Sub-commands example (PHP file)

<?php
// Include the Console_CommandLine package.
require_once 'Console/CommandLine.php';

// create the parser
$xmlfile dirname(__FILE__) . DIRECTORY_SEPARATOR 'ex4.xml';
$parser  Console_CommandLine::fromXmlFile($xmlfile);

// run the parser
try {
    
$result $parser->parse();
    if (
$result->command_name) {
        
$st $result->command->options['reverse'
            ? 
strrev($result->command->args['text'])
            : 
$result->command->args['text'];
        if (
$result->command_name == 'foo') { 
            echo 
"Foo says: $st\n";
        } else if (
$result->command_name == 'bar') {
            echo 
"Bar says: $st\n";
        }
    }
} catch (
Exception $exc) {
    
$parser->displayError($exc->getMessage());
}

?>