Ejemplo n.º 1
0
 function testGenerate()
 {
     $context = RequestContext::create();
     $context->setHost('m.domain.com');
     $router = RouterFactory::create($context);
     $routeBuilder = $router->getRouteBuilder();
     $routeBuilder->add('/path', '');
     $routeBuilder->http('/users/{id}', ['name' => 'home.dash', 'action' => 'UsersController@dashboard'])->setRequirements(['id' => '\\d+', 'subdomain' => 'm'])->setHost('{subdomain}.domain.com')->setDefaults(['subdomain' => 'm']);
     $routeBuilder->prefix('user', function (RouteBuilder $routeBuilder) {
         $routeBuilder->http('/messages', 'MessagesController@index');
         $routeBuilder->http('/messages/{id}', 'MessagesController@show');
         $routeBuilder->prefix('me', function (RouteBuilder $routeBuilder) {
             $routeBuilder->http('/account', 'UsersController@me');
         });
     });
     $routeBuilder->prefix('admin', function (RouteBuilder $routeBuilder) {
         $routeBuilder->http('/dashboard/', 'HomeController@index');
     });
     $this->assertEquals('http://www.domain.com/users/100', $router->generateByName('home.dash', ['subdomain' => 'www', 'id' => 100], true));
     $this->assertEquals('http://m.domain.com/user/messages/100', $router->generateByAction('MessagesController@show', ['subdomain' => 'www', 'id' => 100], true));
     $this->assertEquals('/user/me/account', $router->generateByAction('UsersController@me'));
     $this->assertEquals('/admin/dashboard', $router->generateByAction('HomeController@index'));
 }
Ejemplo n.º 2
0
use Slince\Di\Container;
use Slince\Routing\RouterFactory;
use Slince\View\ServiceFactory;
use Slince\Application\Kernel;
use Slince\Di\Definition;
use Monolog\Logger;
use Monolog\Handler\StreamHandler;
return function (Container $container, Kernel $kernel) {
    //核心组件
    // config
    $container->alias('config', '\\Slince\\Config\\Config');
    // dispatcher
    $container->alias('dispatcher', '\\Slince\\Event\\Dispatcher');
    // kernel cache
    $container->alias('kernelCache', '\\Slince\\Cache\\ArrayCache');
    // router
    $container->share('router', function () {
        return RouterFactory::create();
    });
    $container->share('view', function () {
        $viewManager = ServiceFactory::get('native');
        $viewManager->registerHelperClasses(['asset' => '\\Slince\\Application\\Helper\\AssetHelper', 'url' => '\\Slince\\Application\\Helper\\UrlHelper']);
        return $viewManager;
    });
    $container->share('log', function () use($kernel) {
        $handler = new StreamHandler($kernel->getLogPath() . '/app.log');
        return new Logger('app', [$handler]);
    });
    $container->setDefinition('cache', new Definition('\\Slince\\Cache\\FileCache', [$kernel->getRootPath() . 'tmp/cache']), true);
};