├── .env.sample
├── .gitignore
├── LICENSE
├── README.md
├── app
└── index.php
├── bootstrap
├── constants.php
├── environment.php
├── error.php
├── function.php
└── index.php
├── composer.json
├── docker-compose.yml.sample
├── essentials
├── Base64.php
├── Encode.php
├── File.php
├── Hash.php
├── Http.php
├── Proxy.php
├── Regex.php
├── Text.php
├── Url.php
├── Utils
│ └── Instance.php
└── ePHP.php
└── public_html
├── .htaccess
└── index.php
/.env.sample:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phpzm/ePHP/6b9fdb917336baf61e6e5289e1cd6cc135d1b95f/.env.sample
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | /.idea
2 | /.env
3 | /docker-compose.yml
4 | /vendor
5 | /composer.phar
6 |
7 | *.cache
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2017 Grupo de PHP da Zona da Mata
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Essentials PHP (ePHP)
2 |
3 | O `Essentials PHP` é um conjunto simples de funções, classes e configurações básicas para simplificar a vida do desenvolvedor.
4 |
5 | Você pode aplicar o `Essentials PHP` à qualquer projeto PHP que você tenha. Veremos mais pra frente as vantagens que você pode obter com isso.
6 |
7 | ## Motivação
8 |
9 | Existe hoje uma lacuna muito grande entre usar o PHP diretamente ou adotar algum framework. Não há entre estes dois pontos um meio termo acessível e o que eu tenho visto por ai é o uso do PHP sem o mínimo de segurança e/ou organização quando não se usa um FW (framework) - embora a simples adoção do FW também não garanta totalmente qualidade nem segurança para o projeto. o ePHP entra nesse meio, e entrega uma forma simples e de qualidade para usar o PHP sem muitas firulas e com a opção de mexer no seu fluxo de trabalho só à medida que você precisar.
10 |
11 | A ideia é eliminar do desenvolvimento com PHP acessos diretos a arquivos e o famoso `include db.inc.php`. O PHP já deixou isso para trás, mas falta ferramentas para auxiliar os dev's a seguirem adiante também.
12 |
13 | ## Por onde começar
14 |
15 | Faça download do [arquivo]( https://github.com/phpzm/essentials/archive/master.zip) que contém a estrutura do projeto.
16 |
17 | Em seguida crie uma pasta para o projeto e descompacte o arquivo que você baixou dentro dela.
18 |
19 | Agora é a vez de baixar o Composer. Vá até o [site do composer](https://getcomposer.org/download) role até o final da página e escolha uma versão compatível com a sua versão do PHP. Faça o download do arquivo para a pasta que você criou. Neste momento a versão estável mais atual é a [1.5.6](https://getcomposer.org/download/1.5.6/composer.phar) e ela é compatível com o PHP 7.1 que estou usando : )
20 |
21 | O próximo passo é abrir uma janela de terminal nesse diretório e dar o comando `php composer.phar install`
22 |
23 | Pronto! Agora você já está pronto para rodar o projeto.
24 |
25 | #### Rodando o "Hello World!"
26 |
27 | Você pode optar por:
28 | - Usar o servidor embutido no PHP: use o comando `php -S localhost:8080 -t public_html/` para iniciar o projeto;
29 |
30 | - Usar o Nginx através do docker-compose: crie uma cópia do `docker-compose.yml.sample` removendo o `.sample` do fim do nome do arquivo. Feito isso basta rodar `docker-compose up`.
31 |
32 | - Usar o que já está acostumado: seguindo por aqui imagino que você saiba onde colocar os arquivos e como acessar eles
33 |
34 | Qualquer um dois dois primeiros caminhos vão te levar a acessar o "Hello World!" em [http://localhost:8080](http://localhost:8080), e, obviamente, você pode mudar essas configurações. Caso tenha optado por usar o que já está acostumado a URL de acesso será no formato que você está familiarizado.
35 |
36 | ## Pra que isso tudo gente?!
37 |
38 | A ideia do ePHP é entregar facilidatores para o desenvolvedor. Separamos alguns tópicos a serem tratados que o projeto visa a resolver de forma rápida e muito simples.
39 |
40 | - Acesso centralizado: Um dos objetivos mais importantes deste projeto é remover da raiz do web server a aplicação. Utilizando alguns recursos disponibilizados é possível colocar toda a aplicação "legada" a ser protegida dentro da pasta `app` e configurar como os arquivos serão acessados. Com esta modificação de segurança seu projeto já começa a ter um nível diferenciado de segurança.
41 |
42 | - Super Globais: O segundo ponto a ser tocado é abstrair o acesso às super globais entregando funções que estão disponíveis em qualquer parte do projeto. Usando esses recursos você consegue limpar as entradas do usuário de acordo com o tipo de dado informado e minimiza muito o impacto de falhas de segurança que explorem combinações de valores de entrada para "zuar" com a sua aplicação. O acesso aos dados usa os mecanismos do [filter_input](http://php.net/filter_input) garantido a higienização dos valores recebidos. Além disso também é possível dar suporte a receber dados em formato JSON (payload) através da mesma função que é usada para os dados enviados via POST.
43 |
44 | - Construção de comandos SQL: Você provavelmente está acostumado a criar comandos SQL e concatenar strings com `$_GET` e `$_POST`, mas essa prática vai pulverizar pelo seu código possíveis falhas de segurança. Para contornar isso você leva um construtir de comandos SQL na faixa que usa os famosos `Prepared Statements` para criar as instruções deixando seu código mais limpo e menos desprotegido.
45 |
46 |
--------------------------------------------------------------------------------
/app/index.php:
--------------------------------------------------------------------------------
1 |
2 |
3 | Demo
4 |
6 |
8 |
9 |
10 |
11 |
12 |
', Url::host(), Url::path(), '', ' from ', address()); ?>