示例#1
0
文件: CCUrl.php 项目: clancats/core
 /**
  * Create an URL based on an router alias
  *
  * @param string		$alias
  * @param array  	$params
  * @param bool		$retain		Should we keep the get parameters?
  * @return string 
  */
 public static function alias($alias, $params = array(), $retain = false)
 {
     $route_params = array();
     // to handle the suffix after a slash in an alias define
     $suffix = '';
     if (strpos($alias, '/') !== false && $alias !== '/') {
         // slashes in aliases get appended as suffix
         list($alias, $suffix) = explode('/', $alias);
         $suffix = '/' . $suffix;
     }
     // get the parameters with the numeric keys so we can
     // pass them as route parameters like [any]-[num]-[num]/[any]/
     foreach ($params as $key => $value) {
         if (is_int($key)) {
             $route_params[] = $value;
             unset($params[$key]);
         }
     }
     return CCUrl::to(CCRouter::alias($alias, $route_params) . $suffix, $params, $retain);
 }
示例#2
0
 /**
  * Test CCRouter alias
  */
 public function test_alias()
 {
     CCRouter::on('phpunit/test-alias1', array('alias' => 'phpunit.case.1'), function () {
         echo "Tests are Awesome!";
     });
     // check the alias
     $this->assertEquals(CCRouter::alias('phpunit.case.1'), 'phpunit/test-alias1');
     // not existing
     $this->assertFalse(CCRouter::alias('phpunit.case.notexisting'));
     // set manually
     CCRouter::alias('phpunit.case.2', 'go/to/this/uri');
     // check the alias
     $this->assertEquals(CCRouter::alias('phpunit.case.2'), 'go/to/this/uri');
     // dynamics
     CCRouter::on('phpunit/test2-[num]-alias-[any]', array('alias' => 'phpunit.case.3'), function ($num) {
         echo "Tests are Awesome!";
     });
     // check the alias
     $this->assertEquals(CCRouter::alias('phpunit.case.3'), 'phpunit/test2-[num]-alias-[any]');
     // parameterize
     $this->assertEquals(CCRouter::alias('phpunit.case.3', array(21, 'woo')), 'phpunit/test2-21-alias-woo');
     // alternate alias definition
     CCRouter::on(array('aliasshortcut@alicut' => function () {
         echo 'foobar';
     }));
     $this->assertEquals('aliasshortcut', CCRouter::alias('alicut'));
 }