Painless é uma aplicação que tem como objetivo principal tornar o processo de desenvolvimento de pequenos sites e outras aplicações menos doloroso e mais rápido.
O Painless/ Installer é o instalador do Painless.
Para mais informações clique aqui
Antes de utilizar o Painless certifique-se que os seguintes programas estejam instalados em seu computador:
Primeiro, baixe o instalador do Painless via Composer:
composer global require painless/installer
Insira o caminho do arquivo binário do Painless no Path do seu sistema operacional, este arquivo deverá estar na pasta global do Composer. Geralmente fica em:
%APPDATA%\Composer\vendor\bin
$HOME/.composer/vendor/bin
$HOME/.composer/vendor/bin
Após instalado, o comando "painless" será habilitado no seu terminal e este será capaz de criar uma nova instalação do Painless no diretório de sua escolha. Por exemplo, o comando:
painless site
Cria um diretório chamado "site" contendo todos os arquivos necessários para o funcionamento do Painless.
Executado o comando de criação do diretório e cópia dos arquivos necessários do Painless, a primeira ação que você deverá tomar é abrir o terminal no diretório de sua aplicação e digitar o comando:
composer install
e depois:
npm install
Estes comandos farão que todas as dependências do Painless sejam instaladas.
- MySQL
Todas as instruções para a criação da classe são baseadas nas informações da tabela que está sendo transformada em classe vem do banco de dados. São utilizadas instruções SQL para a captura das informações.
Para que tudo fique corretamente separado, as tabelas obrigatoriamente devem possuir um prefixo seguido de underline (_), o prefixo é visto como um grupo, ou seja, tabelas com mesmos prefixos são armazenadas juntas.
Todas as classes geradas são criadas diretamente no diretório "core/Entities", e tudo fica dividido em sub-pastas com os nomes dos prefixos da tabela que está sendo atacada, por exemplo, para a tabela "auth_users" será criada dentro da pasta "Entities" um diretório com o nome "Auth" e dentro deste serão armazenadas as classes "Users" e "UsersManager".
Todas as tabelas que iniciarem com o mesmo prefixo ficarão juntas no diretório, voltando no exemplo acima todas as tabelas que iniciarem com "auth_" ficarão juntas no diretório "Auth".
Cada campo da tabela deve conter em seu comentário uma string JSon que contem as informações específicas para configurar cada atributo ou método correspondente ao campo. Se divide em um array com os seguinte campos:
-
name_msg -> string com o nome do campo que será apresentado para interação com o usuário
-
validate -> string que informa os parâmetros para validação do campo, recebe os seguintes valores:
- auto_increment: valida campo com numeração automática;
- date_automatic: valida um campo onde a data é informada automaticamente pelo sistema, padrão date('Y-m-d H:i:s');
- fk: valida um campo do tipo foreng key;
- string: valida um campo que contem apenas uma cadeia de caracteres;
- memo: valida um campo que contem com longas cadeias de caracteres;
- date: valida um campo que contem uma data;
- integer: valida campos que armazenam números inteiros;
- float: valida campos que armazenam números decimais;
- flag: os flags são campos especiais que utilizam o campo nome para gerar uma string sem acentos ou caracteres especiais;
- cpf: valida campos que armazenam CPFs;
- email: valida campos que armazenam Emails;
- token_user: valida campos que armazenam Tokens de usuários;
- login: valida campos que armazenam Login;
- password: valida campos que armazenam Passwords;
-
validate_ref -> string que informa a qual campo a validação faz referência, a exemplo os campos de validação do tipo "flag", "jwt" ou "token", ele são gerados automaticamente pelos sistema com base nas funções "flag()", "jwt()" e "token()" respectivamente;
-
insert -> valor booleano que informa se o campo estará disponível em páginas de inserção de registro;
-
update -> valor booleano que informa se o campo estará disponível em páginas de alteração de registro;
-
comment -> Armazena o comentário do campo.
Os arquivos de interação com o banco de dados ficam dentro do diretório "api/*" com as ações de INSERT, UPDATE, ENABLE e DISABLE.
-
DB_CONNECTION
Tipo de conexão do banco de dados, no momento Painless só aceita MySQL. -
DB_HOST:
Endereço da conexão com o banco de dados. -
DB_PORT
Porta da conexão com o banco de dados. -
DB_NAME
Nome do banco de dados. -
DB_USER
Nome do usuário do banco de dados. -
DB_PASS
Senha do banco de dados
-
VIEW_PATH
Pasta onde ficam a views do sistema -
VIEW_CACHE
Pasta onde ficam os arquivos de cache das views do sistema
-
JWT_ISSUER
Origem do token. -
JWT_AUDIENCE
Público reivindicado. -
JWT_ID
Entidade a quem o token pertence, normalmente o ID do usuário -
JWT_SECRET
Chave secreta.
Invoker estabelece as classes do instalador do Painless, além de prover um maker de arquivos padrões para um software RESTFul.
O Invoker possui um maker que permite ser executado via terminal para escrita de classes, actions, routes, middlewares, além de um arquivo index e htaccess padrões que permite a utilização do sistema de rotas do PHP Slim e o gerenciador de templates do Twig.
php invoker [action | class | routes | htaccess | index | middleware] [empty | table:<table_name> | name:]
Classes:
php invoker class table:<table_name>
Actions:
php invoker action table:<table_name>
Routes:
php invoker routes table:<table_name>
Middlewares
php invoker middleware name:<middleware_name>
Arquivo .htaccess padrão:
php invoker htaccess
Arquivo .env padrão:
php invoker env
Arquivo index.php padrão
php invoker index
Os links utilizam os verbos HTTP para identificar quais ações serão executadas.
[POST] - inserção de novos registros.
[PUT] - atualização de registros com base em um ID.
[PATCH] - alterar um registro para "habilitado" com base em um ID.
[DELETE] - alterar um registro para "desabilitado" com base em um ID.
http://[dominio]/[target]/[id|empty]
Para mais informações de formação de links para aplicativos RESTFul leia: Using HTTP Methods for RESTful Services.
O Painless provê uma API de autenticação simples em JWT que pode ser chamada utilizando as rotas contidas no arquivo "routes/auth.php".
O arquivo gulpfile.js do Painless já vem com uma série de tarefas pré-escritas que visam facilitar a tarefa de desenvolvimento do frontend, são elas:
As alterações no frontend de sua aplicação são otimizadas através do Gulp
O Painless utiliza SASS e está habilitado para ler e reescrever seus arquivos *.scss em *.css. Os arquivos devem ser colocados no diretório:
assets > sass
Para reescrever os arquivos abra o terminal e execute o comando:
gulp sass cssmin
Os arquivos javascript (*.js) são unidos em apenas um e minimizados. Os arquivos devem ser colocados no diretório:
assets > js
Para reescrever os arquivos abra o terminal e execute o comando:
gulp lint compress
Os arquivos HTML são minimizados para evitar carga desnecessária no navegador e como o Painless trabalha com template Twig você pode gerá as views automaticamente. Os arquivos *.html devem ser colocados dentro do diretório:
assets > views
Para reescrever os arquivos abra o terminal e execute o comando:
gulp htmlmin
Se você tiver a extensão Livereload instalada no navegador de sua preferência, para habilitá-lo e para que todas as tarefas descritas acima sejam executadas automaticamente à medida que vc altera seus arquivos, basta executar o comando:
gulp
Com isto, o Painless irá executar todas as tarefas e deixar o seu navegador em estado de alerta para fazer as alterações e apresentá-las.