| 
<?phprequire(dirname(__FILE__) . '/../../src/php/Dromeo.php');
 
 function literalRouteHandler($params)
 {
 echo 'Literal Route Handler Called' . PHP_EOL;
 echo 'Route: ' . $params['route'] . PHP_EOL;
 echo 'Params: '  . PHP_EOL;
 var_dump($params['data']);
 }
 
 function literalPostHandler($params)
 {
 echo 'Literal Post Handler Called' . PHP_EOL;
 echo 'Route: ' . $params['route'] . PHP_EOL;
 echo 'Params: '  . PHP_EOL;
 var_dump($params['data']);
 }
 
 function routeHandler($params)
 {
 echo 'Route Handler Called' . PHP_EOL;
 echo 'Route: ' . $params['route'] . PHP_EOL;
 echo 'Params: '  . PHP_EOL;
 var_dump($params['data']);
 }
 
 function fallbackHandler($params)
 {
 echo 'Fallback Handler Called' . PHP_EOL;
 echo 'Route: ' . $params['route'] . PHP_EOL;
 echo 'Params: '  . PHP_EOL;
 var_dump($params['data']);
 }
 
 echo('Dromeo.VERSION = ' . Dromeo::VERSION . PHP_EOL);
 echo(PHP_EOL);
 
 
 $dromeo = new Dromeo();
 /*
 $dromeo->debug( );
 $dromeo->on(array(
 // same as using 'method'=> '*'
 array('route'=>'http://abc.org/{%ALPHA%:group}{/%ALNUM%:?user(1)}', 'handler'=>'routeHandler'),
 array('route'=>'http://def.org/{%ALPHA%:group}{/%ALNUM%:?user(1)}', 'handler'=>'routeHandler')
 ));
 $dromeo->debug( );
 $dromeo->off( 'http://abc.org/{%ALPHA%:group}{/%ALNUM%:?user(1)}' );
 $dromeo->debug( );
 $dromeo->reset( );
 $dromeo->debug( );
 */
 
 $dromeo
 ->fallback('fallbackHandler')
 ->on(
 array('route'=>'http://literal.abc.org/',
 'method'=>'get',
 'handler'=>'literalRouteHandler',
 'defaults'=>array('foo'=>'moo','extra'=>'extra','literal_route'=>1)
 //'types'=>array('id'=> 'INTEGER')
 )
 )
 ->on(
 array('route'=>'http://literal.abc.org/',
 'method'=>'post',
 'handler'=>'literalPostHandler',
 'defaults'=>array('foo'=>'moo','extra'=>'extra','literal_route'=>1)
 //'types'=>array('id'=> 'INTEGER')
 )
 )
 ->on(
 array('route'=>'http://abc.org/{%ALPHA%:group}/{%ALNUM%:user}/{%INT%:id}{/%moo|soo|too%:?foo(1)}{%?|&%preview=%VAR%:?preview(2)}{%ALL%:?rest}',
 // same as using
 'method'=>array('get','post'),
 'handler'=>'routeHandler',
 'defaults'=>array('foo'=>'moo','extra'=>'extra','multiple_methods'=>1)
 //'types'=>array('id'=> 'INTEGER')
 )
 )
 ->one(
 array('route'=>'http://abc.org/{:group}/{:user}/{%NUMBR%:id}{/%moo|soo|too%:?foo(1)}{%ALL%:?rest}',
 // same as using
 //'method'=>'*',
 'handler'=>'routeHandler',
 'defaults'=>array('foo'=>'moo','once'=>'once','default_part'=>1),
 'types'=>array('id'=> 'INTEGER')
 )
 )
 ->on(
 array('route'=>'http://abc.org/{%ALPHA%:group}/{%abcd12%:user}/{%NUMBR%:id}{/%moo|soo|too%:?foo(1)}{%ALL%:?rest}',
 // same as using
 //'method'=>'*',
 'handler'=>'routeHandler',
 'defaults'=>array('foo'=>'moo','const_pattern'=>'const_pattern'),
 'types'=>array('id'=> Dromeo::TYPE('INTEGER'))
 )
 )
 ;
 
 $dromeo->route('http://abc.org/users/abcd12/23/soo?preview=prev+iew&foo=bar', '*', false);
 //$dromeo->route('http://abc.org/users/abcd12/23/?preview=preview&foo=bar', 'get', false);
 //$dromeo->route('http://abc.org/users/abcd12/23', '*', false);
 $dromeo->route('http://literal.abc.org/', 'post', false);
 $dromeo->route('http://literal.abc.org/', 'get', false);
 
 $uri='http://abc.org/path/to/page/?abcd%5B0%5D=1&abcd%5B1%5D=2&foo=a%20string%20with%20spaces%20and%20%2B&moo%5Bsoo%5D=1&moo%5Btoo%5D=2#def%5B0%5D=1&def%5B1%5D=2&foo%5Bsoo%5D=1';
 echo(PHP_EOL);
 echo('Parse URI: ' . $uri . PHP_EOL);
 echo(print_r($dromeo->parse($uri), true) . PHP_EOL);
 
 $uri = 'http://abc.org/path/to/page/';
 echo(PHP_EOL);
 echo('Build URI' . PHP_EOL);
 echo($dromeo->build($uri, array(
 'abcd' => array(1, 2),
 'foo' => 'a string with spaces and +',
 'moo' => array('soo'=>1, 'too'=>2)
 ), array(
 'def' => array(1, 2),
 'foo' => array('soo'=>1)
 )) . PHP_EOL);
 
 $query = 'key1=val1&key2[key3]=val2&key2[key4]=val3&key5[key6][]=val4&key5[key6][]=val5&key7[0]=val6&key7[1]=val7';
 echo(PHP_EOL);
 echo('Parse QUERY: ' . $query . PHP_EOL);
 print_r(Dromeo::unglue_params($query));
 
 |