1<?php
2/**
3 * Example for the usage of ezcConsoleParameter class.
4 *
5 * @package ConsoleTools
6 * @version 1.6.1
7 * @copyright Copyright (C) 2005-2010 eZ Systems AS. All rights reserved.
8 * @license http://ez.no/licenses/new_bsd New BSD License
9 */
10
11require_once 'Base/src/base.php';
12/**
13 * Autoload ezc classes
14 *
15 * @param string $className
16 */
17function __autoload( $className )
18{
19    ezcBase::autoload( $className );
20}
21
22$optionHandler = new ezcConsoleInput();
23
24// Register simple parameter -h/--help
25$optionHandler->registerOption( new ezcConsoleOption( 'h', 'help' ) );
26
27// Register complex parameter -f/--file
28$file = new ezcConsoleOption(
29 'f',
30 'file',
31 ezcConsoleInput::TYPE_STRING,
32 null,
33 false,
34 'Process a file.',
35 'Processes a single file.'
36);
37$optionHandler->registerOption( $file );
38
39// Manipulate parameter -f/--file after registration
40$file->multiple = true;
41
42// Register another complex parameter that depends on -f and excludes -h
43$dir = new ezcConsoleOption(
44 'd',
45 'dir',
46 ezcConsoleInput::TYPE_STRING,
47 null,
48 true,
49 'Process a directory.',
50 'Processes a complete directory.',
51 array( new ezcConsoleOptionRule( $optionHandler->getOption( 'f' ) ) ),
52 array( new ezcConsoleOptionRule( $optionHandler->getOption( 'h' ) ) )
53);
54$optionHandler->registerOption( $dir );
55
56// Register an alias for this parameter
57$optionHandler->registerAlias( 'e', 'extended-dir', $dir );
58
59// Process registered parameters and handle errors
60try
61{
62     $optionHandler->process( array( 'example_input.php', '-h' ) );
63}
64catch ( ezcConsoleOptionException $e )
65{
66     echo $e->getMessage();
67     exit( 1 );
68}
69
70// Process a single parameter
71$file = $optionHandler->getOption( 'f' );
72if ( $file->value === false )
73{
74     echo "Parameter -{$file->short}/--{$file->long} was not submitted.\n";
75}
76elseif ( $file->value === true )
77{
78     echo "Parameter -{$file->short}/--{$file->long} was submitted without value.\n";
79}
80else
81{
82     echo "Parameter -{$file->short}/--{$file->long} was submitted with value <".var_export($file->value, true).">.\n";
83}
84
85// Process all parameters at once:
86foreach ( $optionHandler->getOptionValues() as $paramShort => $val )
87{
88     switch ( true )
89     {
90         case $val === false:
91             echo "Parameter $paramShort was not submitted.\n";
92             break;
93         case $val === true:
94             echo "Parameter $paramShort was submitted without a value.\n";
95             break;
96         case is_array( $val ):
97             echo "Parameter $paramShort was submitted multiple times with value: <".implode(', ', $val).">.\n";
98             break;
99         default:
100             echo "Parameter $paramShort was submitted with value: <$val>.\n";
101             break;
102     }
103}
104?>
105