FastSitePHP FastSitePHP FastSitePHP

FastSitePHP Rocketship FastSitePHP Rocketship PHP

Um Moderno Framework de Código Aberto para Criar Sites e APIs de Alto Desempenho com PHP

  • Sites Melhores

    Sites Melhores

    FastSitePHP foi desenvolvido para ser rápido, código flexível, estabilidade a longo prazo, fácil utilização e uma melhor experiência geral de desenvolvimento. Usando o FastSitePHP você pode criar sites melhores e mais rápidos do que nunca.

  • Alto Desempenho

    Alto Desempenho

    Com o FastSitePHP páginas complexas podem ser geradas em milésimos de segundo usando somente um ínfima quantidade de memoria. Esse nível de desempenho até permite que sites tenham um suave execução em computadores cpm especificações de hardware mais simples.

  • Fácil de configurar e utilizar

    Fácil de configurar e utilizar

    O FastSitePHP é desenvolvido de forma que seja fácil configurá-lo em qualquer Sistema Operacional (SO), de ler seu código, de utilizá-lo para desenvolver e muito mais. Com o FastSitePHP site e apps de alta qualidade pode ser desenvolvidos num rítmo rápido usando poucas linhas de código e configuração mínima.

  • Rápido para aprender e depurar

    Rápido para aprender e depurar

    O FastSitePHP é bem documentado e vem com exemplos práticos. O FastSitePHP fornece mensagens de erro amigáveis para o desenvolvedor para que os erros possam ser corrigidos rapidamente mesmo que você tenha pouca ou nenhuma experiência com PHP.

  • Segurança Robusta

    Segurança Robusta

    A segurança foi cuidadosamente planejada em todas os aspectos do FastSitePHP tornando-o seguro e fácil de utilizar. Características de segurança incluem Criptografia (texto, objetos e arquivos), Cookies Assinados, JWR, CORS, Validação de Servidor Proxy, Limitação de Taxas e muito mais.

  • Testes de Unidade Baseadas em Web

    Testes de Unidade Baseadas em Web

    A maioria dos frameworks são testados à partir de um computador de desenvolvedor usando ferramentas CLI especiais; No entanto isso não garante que funcionará no seu ambiente. O FastSitePHP fornece um método baseado em web para teste, fazendo com que toda a velocidade de código e pagina seja facilmente confirmada em qualquer ambiente.

Código de Amostra

<?php

// -------------------------------
// Configuração
// -------------------------------

// Configure um autoloader de PHP
// Isso permite que classes sejam dinamicamente carregadas
require '../vendor/autoload.php';

// OU para um site mínimo somente é necessário incluir so 2 seguintes arquivos
// require '../vendor/fastsitephp/src/Application.php';
// require '../vendor/fastsitephp/src/Route.php';

// Crie o Objecto da Aplicação com Tratamento de Erro e UTC no fuso horário
$app = new \FastSitePHP\Application();
$app->setup('UTC');

// -------------------------------
// Defina Rotas
// -------------------------------

// Envie uma resposta 'Olá Mundo!' para requisições padrão
$app->get('/', function() {
    return 'Hello World!';
});

// Envie uma resposta 'Olá Mundo!' para a URL '/hello' ou no caso da variável
// opcional [name]  variable safely escape and return a message with the name
// (exemplo: '/hello/FastSitePHP' mostrará 'Olá FastSitePHP!')
$app->get('/hello/:name?', function($name = 'Mundo') use ($app) {
    return 'Olá ' . $app->escape($name) . '!';
});

// Envie uma reposta JSON que contenha um objeto com informações básicas do Site
$app->get('/site', function() use ($app) {
    return [
        'rootUrl' => $app->rootUrl(),
        'rootDir' => $app->rootDir(),
        'requestedPath' => $app->requestedPath(),
    ];
});

// Envie uma reposta JSON que contenha informações básicas de Requisição
$app->get('/request', function() {
    $req = new \FastSitePHP\Web\Request();
    return [
        'acceptEncoding' => $req->acceptEncoding(),
        'acceptLanguage' => $req->acceptLanguage(),
        'origin' => $req->origin(),
        'userAgent' => $req->userAgent(),
        'referrer' => $req->referrer(),
        'clientIp' => $req->clientIp(),
        'protocol' => $req->protocol(),
        'host' => $req->host(),
        'port' => $req->port(),
    ];
});

// Envie o conteúdo deste arquivo como uma resposta em textopuro utilizando
// cabeçalos HTTP Response permitig que o usuário final faça um cache da
// página até que o arquivo seja modificado
$app->get('/cached-file', function() {
    $file_path = __FILE__;
    $res = new \FastSitePHP\Web\Response();
    return $res->file($file_path, 'text', 'etag:md5', 'private');
});

// Retorna o endereço de IP do usuário como um serviço web JSON que suporta
// Cross-Origin Resource Sharing (CORS) e diz especificamente para o navegador
// para não fazer cache dos resultados. Neste exemplo assume-se que o Servidor
// Web esteja atrás de um servidor proxy (por exemplo um Balanceador de Carga
// e o endereço de IP é lido de forma segura. Além disso a função cors() é
// é chamada de um função filtro a qual somente é chamada se a rota corresponder
// e permite tratar corretamente uma requisição OPTIONS.
$app->get('/whats-my-ip', function() {
    $req = new \FastSitePHP\Web\Request();
    return [
        'ipAddress' => $req->clientIp('from proxy', 'trust local'),
    ];
})
->filter(function() use ($app) {
    $app
        ->noCache()
        ->cors('*');
});

// Define uma função que retorna true se a requisição web vier de uma rede
// local (por exemplo 127.0.0.1 ou 10.0.0.1). Esta função será utilizada em
// um filtro para mostrar ou ocultar rotas.
$is_local = function() {
    // Compare Request IP using Classless Inter-Domain Routing (CIDR)
    $req = new \FastSitePHP\Web\Request();
    $private_ips = \FastSitePHP\Net\IP::privateNetworkAddresses();

    return \FastSitePHP\Net\IP::cidr(
        $private_ips,
        $req->clientIp('from proxy')
    );
};

// Prove informações detalhadas do ambiente PHP para usuários requisitando a
// página de uma rede local. Se a requisição vier de alguém na Internet então
// uma repostas 404 'Página não encontrada' seria retornada. Chamando [phpinfo()]
// retorna um resposta HTML para que a rota não tenha que retornar alguma coisa.
$app->get('/phpinfo', function() {
    phpinfo();
})
->filter($is_local);

// Provê uma resposta em texto com informações do Servidor para usuários locais
$app->get('/server', function() {
    $config = new \FastSitePHP\Net\Config();
    $req = new \FastSitePHP\Web\Request();
    $res = new \FastSitePHP\Web\Response();
    return $res
        ->contentType('text')
        ->content(implode("\n", [
            "Host: {$config->fqdn()}",
            "Server IP: {$req->serverIp()}",
            "Network IP: {$config->networkIp()}",
            str_repeat('-', 80),
            $config->networkInfo(),
        ]));
})
->filter($is_local);

// Se a URL requisitada inicia com '/examples' então carregue um arquivo PHP
// para as rotas correspondentes à partir do diretório atual. Este é um arquivo
// que provê muitos outros exemplos. Se você baixar este site, este código
// e outros exemplos podem ser encontrados em [app_data/sample-code].
$app->mount('/examples', 'home-page-pt-BR-examples.php');

// -------------------------------
// Roda a aplicação
// -------------------------------
$app->run();