| 
<?php/**
 *+-----------------------------------------------------------------------+
 *| CliParser v0.2 - 19 Oct 2011                                          |
 *+-----------------------------------------------------------------------+
 *|  Olivier Bourdoux                                                     |
 *|  [email protected]                                           |
 *|  www.xurei-design.be                                                  |
 *|                                                                       |
 *|  Original code from :                                                 |
 *|  Diego do Nascimento Feitosa                                          |
 *|  [email protected]                                                  |
 *|  www.dnfeitosa.com                                                    |
 *|  São Paulo/SP - Brasil                                               |
 *+-----------------------------------------------------------------------+
 *| CliParser is free software; you can redistribute it and/or modify     |
 *| it under the terms of the GNU General Public License as published by  |
 *| the Free Software Foundation; either version 2 of the License, or     |
 *| (at your option) any later version.                                   |
 *|                                                                       |
 *| CliParser is distributed in the hope that it will be useful, but      |
 *| WITHOUT ANY WARRANTY; without even the implied warranty of            |
 *| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU     |
 *| General Public License for more details.                              |
 *|                                                                       |
 *| You should have received a copy of the GNU General Public License     |
 *| along with CliParser; if not, write to the Free Software              |
 *| Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA              |
 *| 02111-1307  USA                                                       |
 *+-----------------------------------------------------------------------+
 **/
 
 require_once('CliParser.inc');
 
 $clistring = new CliTokenString("-c");
 $clistring->setDescription("It requires a string");
 
 $clihelp = new CliTokenBoolean("--help");
 $clihelp->setDescription("Token that shows a help message");
 
 $clisingleton = new CliTokenBoolean("-e");
 $clisingleton->setDescription("It doesn't require any value. The existence of this argument is enough");
 
 $clibool = new CliTokenBoolean("-b");
 $clibool->setDescription("Boolean token");
 
 $clidir = new CliTokenDirectory("-d");
 $clidir->setDescription("This token requires a directory path as argument. If the argument isn't a directory path, an error message will appear.");
 
 $clifile = new CliTokenDirectory("-f");
 $clifile->setDescription("This token requires a file path as argument. If the argument isn't a file path, an error message will appear.");
 
 $cliint = new CliTokenInteger("-i");
 $cliint->setDescription("This token requires an integer path as argument. If the argument isn't an integer, an error message will appear.");
 
 $clienum = new CliTokenEnum("-enum", array('the', 'different', 'values', 'accepted'));
 $clienum->setDescription("This token requires its argument to be one of the values specified");
 
 class MyCliParser extends CliParser
 {
 public function getHelpMessage()
 {
 global $argv;
 echo sprintf("Usage: %s [options] <file(s)>\nOptions :\n", $argv[0]);
 $this->getDescriptions();
 echo "\n";
 exit;
 }
 }
 
 //Building the parser and parsing the arguments
 $cli = new MyCliParser($_SERVER["argv"]);
 $cli->register($clihelp, false); // false because it not require an argument
 $cli->register($clistring);
 $cli->register($clisingleton, false); // false because it not require an argument
 $cli->register($clibool);
 $cli->register($clidir);
 $cli->register($clifile);
 $cli->register($cliint);
 $cli->register($clienum);
 $cli->parse();
 
 //Showing the help message if asked
 if ($clihelp->getValue())
 {
 $cli->getHelpMessage();
 exit;
 }
 
 //Showing the options
 var_dump($clistring->getValue());
 var_dump($clisingleton->getValue());
 var_dump($clibool->getValue());
 var_dump($clidir->getValue());
 var_dump($clifile->getValue());
 var_dump($cliint->getValue());
 
 //Showing the non options
 var_dump($cli->getNonOptions());
 
 //Some commands :
 //  php example.php --help      => will show the help message
 //  php example.php -c foo      => the $clistring token will be set
 //  php example.php -e -c foo   => the $clisingleton token will be set
 //  php example.php nonoption1 -i 42 => one non-option argument : nonoption1
 //  php example.php -i 42 nonoption1 => same thing, different order
 //  php example.php -i 42.5          => shows an error : 42.5 is not an integer
 
 
 ?>
 
 |