Skip to content

Latest commit

History

History
265 lines (202 loc) 路 14.8 KB

README.pt-BR.md

File metadata and controls

265 lines (202 loc) 路 14.8 KB

FastSitePHP

馃専 Bem vindo ao FastSitePHP!

Obrigado pela visita! 馃尃馃憤

FastSitePHP 茅 um novo framework web que usa PHP. FastSitePHP foi projetado para desempenho r谩pido, flexibilidade de c贸digo, estabilidade a longo prazo, f谩cil utiliza莽茫o e uma melhor experi锚ncia geral de desenvolvimento. FastSitePHP 茅 tamb茅m m铆nimo em tamanho tornando-o r谩pido para baixar e f谩cil para come莽ar sua utiliza莽茫o. Mesmo sendo novo (primeira publica莽茫o em November de 2019) FastSitePHP foi escrito durante v谩rios anos e 茅 extremamente est谩vel contendo um grande n煤mero de testes de unidade.

Este reposit贸rio cont茅m o framework FastSitePHP鈥檚 e o Website principal.

O FastSitePHP inclui muitos componentes independentes que podem ser utilizados sem o objeto principal da aplica莽茫o ou framework sendo f谩cil utiliz谩-lo com outros frameworks PHP em projetos.

馃挮 Por que utilizar o FastSitePHP?

Grande Desempenho F谩cil de configurar e utilizar
Grande Desempenho Com o FastSitePHP p谩ginas complexas podem ser geradas em mil茅simos de segundo usando somente uma pequena quantidade de mem贸ria. Esse n铆vel de desempenho at茅 permite que sites sejam r谩pidos em m谩quinas n茫o poderosas. F谩cil de configurar O FastSitePHP 茅 desenvolvido de forma que sua configura莽茫o seja f谩cil em qualquer SO, que seu c贸digo seja de f谩cil leitura, de f谩cil utiliza莽茫o em desenvolvimento e muito mais. Como FastSitePHP sites e apps de alta qualidade podem ser desenvolvidos em um ritmo r谩pido usando poucas linhas de c贸digo e configura莽茫o m铆nima.
R谩pido de aprender e depurar Seguran莽a Robusta
R谩pido de aprender e depurar O FastSitePHP 茅 bem documentado e vem com exemplos pr谩ticos. O FastSitePHP prov锚 mensagens de erro amig谩veis fazendo com que erros possam ser corrigidos rapidamente mesmo se voc锚 tiver pouca ou nenhuma experi锚ncia com PHP. Seguran莽a Robusta A seguran莽a foi cuidadosamente planejada em todas as funcionalidades do FastSitePHP de forma que ele 茅 seguro e de f谩cil utiliza莽茫o. As funcionalidades de seguran莽a incluem criptografia (texto, objetos e arquivos files), cookies assinados, JWT, CORS, valida莽茫o de servidores Proxy, Rate Limiting e mais.

馃殌 Teste isso online!

O site principal do FastSitePHP fornece um local para desenvolvimento o Code Playground onde voc锚 pode utilizar PHP, HTML, JavaScript, CSS e mais. N茫o h谩 nada para instalar e voc锚 pode trabalhar diretamente com PHP no servidor. Se voc锚 nunca teve contato com PHP antes esta 茅 um boa maneira de aprender PHP.

https://www.fastsitephp.com/en/playground

Code Playground do FastSitePHP

馃殌 Come莽ando

Come莽ar com PHP e o FastSitePHP 茅 extremamente f谩cil. Se n茫o tiver PHP instalado siga as instru莽玫es para Windows, Mac e Linux on the getting started page: https://www.fastsitephp.com/en/getting-started

Assim que o PHP estiver instalado voc锚 pode rodar o site da linha de comando como mostrado abaixo ou se voc锚 utiliza um editor de c贸digo ou IDE [Visual Studio Code, GitHub Atom, etc] ent茫o voc锚 pode rodar o site diretamente. Veja a p谩gina acima Come莽ando para mais.

Baixe e rode o site principal e o framework completo (~1.2 mb)

# Baixe este Reposit贸rio
cd {root-directory}
php -S localhost:3000

Para incluir suporte a renderiza莽茫o de documentos markdown 脿 partir do servidor ou para fun莽玫es de criptografia com vers玫es mais antigas do PHP (PHP5) antes de qualquer coisa execute o script de instala莽茫o.

cd {root-directory}
php ./scripts/install.php

Instalar utilizando o Composer (Gerenciador de Pacotes e/ou depend锚ncias PHP) (~470 kb)

O framework FastSitePHP pode tamb茅m ser instalado usando o Composer. Quando instalado via Composer somente os arquivos essenciais s茫o inclu铆dos e n茫o o reposit贸rio completo com o site principal. O tamanho dos arquivos baixados 茅 pequeno, ent茫o 茅 r谩pido inclu铆-lo em um projeto j谩 existente ou us谩-lo para iniciar novos projetos. Quando instalado com o auxilio do Composer as classes do FastSitePHP podem ser utilizadas com outros frameworks PHP como Symfony, Laravel, Zend.

composer require fastsitephp/fastsitephp

Comece com um Site Inicial (~67 kb)

Um site inicial tamb茅m existe e inclui v谩rios p谩ginas de exemplo e fornece uma estrutura b谩sica de diret贸rio/arquivo. 脡 pequeno e r谩pido para configurar.

https://github.com/fastsitephp/starter-site

Site inicial FastSitePHP

馃搫 C贸digo de Exemplo

<?php

// -------------------------------
// Configurar
// -------------------------------

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

// Ou um site m铆nimo possuindo somente 2 arquivos como requisito de inclus茫o
// require '../vendor/fastsitephp/src/Application.php';
// require '../vendor/fastsitephp/src/Route.php';

// Crie o objeto da aplica莽茫o com tratamento de erros e utilizando o fuso hor谩rio UTCs
$app = new \FastSitePHP\Application();
$app->setup('UTC');

// -------------------------------
// Definindo Rotas
// -------------------------------

// Envie uma resposta 'Ol谩 Mundo!' para requisi莽玫es padr茫o
$app->get('/', function() {
    return 'Ol谩 Mundo!';
});

// Envie uma resposta 'Ol谩 Mundo!' para a URL '/hello' ou no caso da
// vari谩vel opcional [name], escapar com seguran莽a e retornar uma
// mensagem como nome
// (exemplo: '/hello/FastSitePHP' mostrar谩 'Ol谩 FastSitePHP!')
$app->get('/hello/:name?', function($name = 'Mundo') use ($app) {
    return 'Ol谩 ' . $app->escape($name) . '!';
});

// Envie uma Resposta JSON que contenha um Objeto com informa莽茫o
// b谩sica do site
$app->get('/site', function() use ($app) {
    return [
        'rootUrl' => $app->rootUrl(),
        'rootDir' => $app->rootDir(),
        'requestedPath' => $app->requestedPath(),
    ];
});

// Envie uma resposta JSON que contenha informa莽玫es b谩sicas da 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 texto puro
// usando cabe莽alhos HTTP Response que da permiss茫o ao usu谩rio para
// armazenar a p谩gina em cache at茅 o arquivos ser modificado
$app->get('/cached-file', function() {
    $file_path = __FILE__;
    $res = new \FastSitePHP\Web\Response();
    return $res->file($file_path, 'text', 'etag:md5', 'private');
});

// Retorne o endere莽o de IP do usu谩rio como um servi莽o web JSON que suporta CORS
// (Cross-Origin Resource Share - Compartilhamento de Recursos de Origem Cruzada)
// e especificamente diz ao navegador para n茫o armazenar em cache os resultados.
// Neste exemplo assume-se que servidor web est谩 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() 茅 chamado 脿 partir de um fun莽茫o filtro que somente
// 茅 chamada se a rota 茅 equivalente e permite o correto tratamento de 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 verdadeiro (true) se a requisi莽茫o web
// est谩 vindo 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 a requisi莽茫o e IP usando 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')
    );
};

// Fornece informa莽玫es de ambiente detalhadas do PHP para usu谩rios requisitando
// a p谩gina de uma rede local. Se a requisi莽茫o est谩 vindo de algu茅m na Internet
// ent茫o uma resposta 404 'P谩gina n茫o encontrada' seria retornada. Chamando [phpinfo()]
// produz uma resposta HTML para que a rota n茫o precise retornar nada.
$app->get('/phpinfo', function() {
    phpinfo();
})
->filter($is_local);

// Fornece uma 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 come莽a com '/examples' ent茫o carregue um arquivo
// para a rota correspondente 脿 partir do diret贸rio atual. Este 茅 um arquivo
// real que fornece 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-en-examples.php');

// -------------------------------
// Rodar a aplica莽茫o
// -------------------------------
$app->run();

馃 Contribuindo

Todas as contribui莽玫es s茫o bem vindas. Para mudan莽as significativas incluindo novas classes, mudan莽as disruptivas no c贸digo existente, atualizando gr谩ficos e arquivos, por favor antes abra uma quest茫o para discutirmos o que voc锚 gostaria de mudar. Alguns exemplo de itens para contribuir:

  • Erros de digita莽茫o e gram谩tica - Se vir algum por favor corrija e envie.
  • Adicionando mais p谩ginas de demonstra莽茫o - As p谩ginas de demonstra莽茫o normalmente utilizam mais HTML, CSS e JavaScript que PHP, ent茫o se voc锚 茅 um desenvolvedor web e n茫o sabe PHP pode facilmente aprender durante o desenvolvimento.
  • Testes de unidade adicionais e metodologias de teste
  • Documenta莽茫o e Tutoriais adicionais
  • Classes e funcionalidades adicionais
  • Novas ideias - Se voc锚 tem ideias de como melhorar por favor abra uma quest茫o para que possamos discutir.

O arquivo docs/to-do-list.txt cont茅m a lista completa de itens pendentes e 茅 um lugar para come莽ar.

鉂 FAQ

Por o FastSitePHP foi Criado?

O c贸digo essencial do FastSitePHP foi iniciado em 2013 quado o o autor estava desenvolvendo um website usando PHP. Originalmente frameworks PHP populares foram comparados, testados e um foi inicialmente escolhido. No entanto na 茅poca ( e mesmo agora na maior parte) a maioria dos frameworks PHP eram extremamente lentos comparados a frameworks em outras linguagens e ao pr贸prio PHP.

Enquanto o site era desenvolvido o framework e componentes foram sendo substitu铆dos um por um por classes individuais e assim que todos os frameworks e classes de terceiros foram removidos o site teve um desempenho sessenta vezes (10x) mais r谩pido, usando um d茅cimo (1/10) da mem贸ria, alcan莽ando uma pontua莽茫o de 100 no Google Speed Test e erros inesperados de servidor se foram. Ent茫o durante o per铆odo de 6 anos o c贸digo principal foi desenvolvido no FastSitePHP.

Eu j谩 sei JavaScript/Node, Python, C#, Java etc. Por que eu deveria aprender PHP?

  • PHP 茅 a mais amplamente utilizada linguagem de programa莽茫o no mundo para websites din芒micos em server-side; Isso inclui muitos dos mais populares sites no mundo.
  • O PHP tem grande documenta莽茫o e uma grande comunidade de desenvolvedores que faz com que aprender e encontrar recursos seja f谩cil.
  • Suporte a banco de dados j谩 integrado. Todos os principais fornecedores (Microsoft, Oracle, etc) tem dado suporte ao PHP por anos com extens玫es de banco de dados nativas de alto desempenho.
  • Funciona em qualquer ambiente. A mais recente vers茫o do PHP pode funcionar virtualmente em qualquer servidor ou computador. Isso inclui Windows IIS, Linux/Apache, Raspberry Pi e mesmo em servidores IBM legados.
  • Desenvolvimento e configura莽茫o de servidor r谩pidos - simplesmente fa莽a mudan莽as no arquivo PHP e recarregue a p谩gina. N茫o h谩 processo de compila莽茫o para compilar programas e servi莽os para parar e reiniciar quando forem feitas mudan莽as.
  • Aprender uma linguagem adicional permite aprender novas ideias e conceitos e melhora suas habilidades gerais.
  • Renda - mais linguagens = mais dinheiro e um melhor curr铆culo. Enquanto em m茅dia PHP paga menos que muitas outras linguagens populares; sites grandes e sites que dependem de empresas de design geralmente pagam mais (alta renda) por desenvolvimento em PHP. Tendo PHP em seu curr铆culo permite novas oportunidades. Al茅m disso se voc锚 est谩 pagando desenvolvedores para desenvolverem um site em PHP isso pode resultar em um site mais em conta.

Qual o tamanho do FastSitePHP?

  • Framework (~19,000 linha de c贸digo PHP, ~470 kb como um arquivo zip)
  • Testes de Unidade (~25,000 linhas de c贸digo)

Quais vers玫es do PHP s茫o suportadas?

Todas as vers玫es do PHP da 5.3 a 7.4.

馃摑 Licen莽a

Este projeto est谩 sob o licenciamento MIT - veja o arquivo da LICEN脟A para detalhes.

Arte (SVG Files) localizadas em [website/public/img] e [website/public/img/icons] est茫o licenciadas sob duplo licenciamento MIT License e Creative Commons Attribution 4.0 International License.