예제 #1
0
function json(Slim\Http\Response $res, $json = array(), $status = null)
{
    $res->headers->set('Content-Type', 'application/json');
    $res->write(json_encode($json));
    if ($status) {
        $res->setStatus($status);
    }
    return;
}
예제 #2
0
 public function testIsServerError()
 {
     $r1 = new \Slim\Http\Response();
     $r2 = new \Slim\Http\Response();
     $r1->setStatus(500);
     $r2->setStatus(400);
     $this->assertTrue($r1->isServerError());
     $this->assertFalse($r2->isServerError());
 }
예제 #3
0
파일: App.php 프로젝트: fobiaweb/slim
 /**
  * Constructor
  * @param  array $userSettings Associative array of application settings
  * @api
  */
 public function __construct(array $userSettings = array())
 {
     parent::__construct();
     // Settings
     $this['settings'] = function ($c) use($userSettings) {
         $config = new \Slim\Configuration(new \Slim\ConfigurationHandler());
         $config->setArray($userSettings);
         return $config;
     };
     // Environment
     $this['environment'] = function ($c) {
         return new \Slim\Environment($_SERVER);
     };
     // Request
     $this['request'] = function ($c) {
         $environment = $c['environment'];
         $headers = new \Slim\Http\Headers($environment);
         $cookies = new \Slim\Http\Cookies($headers);
         if ($c['settings']['cookies.encrypt'] === true) {
             $cookies->decrypt($c['crypt']);
         }
         return new \Slim\Http\Request($environment, $headers, $cookies);
     };
     // Response
     $this['response'] = function ($c) {
         $headers = new \Slim\Http\Headers();
         $cookies = new \Slim\Http\Cookies();
         $response = new \Slim\Http\Response($headers, $cookies);
         $response->setProtocolVersion('HTTP/' . $c['settings']['http.version']);
         return $response;
     };
     // Router
     $this['router'] = function ($c) {
         return new \Slim\Router();
     };
     // View
     $this['view'] = function ($c) {
         $view = $c['settings']['view'];
         if ($view instanceof \Slim\Interfaces\ViewInterface === false) {
             throw new \Exception('View class must be instance of \\Slim\\View');
         }
         return $view;
     };
     // Crypt
     $this['crypt'] = function ($c) {
         return new \Slim\Crypt($c['settings']['crypt.key'], $c['settings']['crypt.cipher'], $c['settings']['crypt.mode']);
     };
     // Session
     $this['session'] = function ($c) {
         $session = new \Slim\Session($c['settings']['session.handler']);
         $session->start();
         if ($c['settings']['session.encrypt'] === true) {
             $session->decrypt($c['crypt']);
         }
         return $session;
     };
     // Flash
     $this['flash'] = function ($c) {
         $flash = new \Slim\Flash($c['session'], $c['settings']['session.flash_key']);
         if ($c['settings']['view'] instanceof \Slim\Interfaces\ViewInterface) {
             $c['view']->set('flash', $flash);
         }
         return $flash;
     };
     // Mode
     $this['mode'] = function ($c) {
         $mode = $c['settings']['mode'];
         if (isset($_ENV['SLIM_MODE'])) {
             $mode = $_ENV['SLIM_MODE'];
         } else {
             $envMode = getenv('SLIM_MODE');
             if ($envMode !== false) {
                 $mode = $envMode;
             }
         }
         return $mode;
     };
     // Middleware stack
     $this['middleware'] = array($this);
 }
예제 #4
0
 /**
  * Deleta o usuario
  * $request e $response usam interface psr7
  * $args contém os argumentos informados na rota
  *
  * @param Slim\Http\Request $request
  * @param Slim\Http\Response $response
  * @param array $args
  * @return void|Slim\Http\Response
  */
 public function delete($request, $response, $args)
 {
     $id = $args['id'];
     $validations = [v::intVal()->validate($id)];
     if ($this->validate($validations) === false) {
         return $response->withStatus(400);
     } else {
         $usuario = Models\Usuario::with('relationDependentes')->find($id);
         if ($usuario) {
             $dependentes = $usuario->relationDependentes->all();
             if ($dependentes) {
                 $status = 403;
                 echo $this->error('delete#usuarios{id}', $request->getUri()->getPath(), $status, 'FK_CONSTRAINT_ABORT');
                 return $response->withStatus($status);
             } else {
                 $usuario->delete();
             }
         } else {
             $status = 404;
             echo $this->error('delete#usuarios{id}', $request->getUri()->getPath(), $status);
             return $response->withStatus($status);
         }
     }
 }
<?php

use Interop\Container\ContainerInterface;
return [PDO::class => function (ContainerInterface $container) {
    $settings = $container->get('settings')['db'];
    $pdo = new \PDO("mysql:host={$settings['host']};dbname={$settings['dbname']};charset=utf8", $settings['user'], $settings['password']);
    $pdo->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
    return $pdo;
}, 'Renderer' => function (ContainerInterface $container) {
    /* @var $themeEntity WP_Theme */
    $themeEntity = $container->get(\Sarcofag\API\WP::class)->wp_get_theme();
    $themeDirectory = $themeEntity->get_template_directory() . '/src/api/view';
    $paths = array_map('realpath', array_merge($container->get('template.paths'), [$themeEntity->get_template() => $themeDirectory]));
    $renderer = new \Sarcofag\View\Renderer\SimpleRenderer($container->get('HelperManager'), $paths, $container, $container->get('Sarcofag\\API\\WP'));
    return $renderer;
}, 'errorHandler' => WP_DEBUG ? function (ContainerInterface $container) {
    return new \Slim\Handlers\Error($container->get('settings')['displayErrorDetails']);
} : DI\get('ErrorController'), 'notFoundHandler' => DI\get('NotFoundController'), 'notAllowedHandler' => DI\get('NotAllowedController'), 'environment' => function () {
    return new \Slim\Http\Environment($_SERVER);
}, 'request' => function (ContainerInterface $container) {
    return \Slim\Http\Request::createFromEnvironment($container->get('environment'));
}, 'response' => function (ContainerInterface $container) {
    $headers = new \Slim\Http\Headers(['Content-Type' => 'text/html; charset=UTF-8']);
    $response = new \Slim\Http\Response(200, $headers);
    return $response->withProtocolVersion($container->get('settings')['httpVersion']);
}, 'callableResolver' => function (ContainerInterface $container) {
    return new \Slim\CallableResolver($container);
}];