MINI é um esqueleto de aplicação PHP extremamente simples e fácil de entender, reduzido ao máximo. MINI NÃO é um framework profissional e não vem com todas as coisas que os frameworks reais possuem. Se você quiser apenas mostrar algumas páginas, fazer algumas chamadas de banco de dados e um pouco de AJAX aqui e ali, sem ler documentações massivas de frameworks profissionais altamente complexos, então o MINI pode ser muito útil para você. O MINI é fácil de instalar, funciona em quase todos os lugares e não complica as coisas mais do que o necessário.
Para uma introdução mais profunda ao MINI, dê uma olhada nesta postagem do blog: MINI, um aplicativo PHP barebone extremamente simples.
MINI tem um irmão menor, chamado TINY. É semelhante ao MINI, mas funciona sem mod_rewrite em quase todos os ambientes. Não é adequado para sites ativos, mas é bom para prototipagem rápida.
O MINI também tem um irmão maior, chamado MINI2. É ainda mais simples, foi construído usando Slim e possui recursos interessantes como compilação SASS, Twig etc.
MINI3 é o sucessor do MINI, usando a estrutura de aplicativo nativa original do MINI1 (sem Slim sob o capô), mas com carregamento automático PSR-4 adequado, múltiplas classes de modelo e namespaces reais.
Se você estiver usando o Vagrant para seu desenvolvimento, poderá instalar o MINI com um clique (ou um comando na linha de comando) [Vagrant doc]. MINI vem com um arquivo de demonstração Vagrant (define sua caixa Vagrant) e um demo bootstrap.sh que instala automaticamente Apache, PHP, MySQL, PHPMyAdmin, git e Composer, define uma senha escolhida no MySQL e PHPMyadmin e até mesmo dentro do código do aplicativo, baixa as dependências do Composer, ativa mod_rewrite e edita as configurações do Apache, baixa o código do GitHub e executa as instruções SQL de demonstração (para dados de demonstração). Isso é 100% automático, você terminará após +/- 5 minutos com uma instalação totalmente executada do MINI2 dentro de uma caixa do Ubuntu 14.04 LTS Vagrant.
Para fazer isso, coloque Vagrantfile
e bootstrap.sh
de _vagrant
dentro de uma pasta (e nada mais). Faça vagrant box add ubuntu/focal64
para adicionar o Ubuntu 20.04 LTS 64bit ao Vagrant (a menos que você já o tenha) e, em seguida, faça vagrant up
para executar o box. Quando a instalação estiver concluída, você poderá usar diretamente o aplicativo de demonstração totalmente instalado em 192.168.33.44
(você pode alterar isso no Vagrantfile). Como este é apenas um ambiente de demonstração rápida, a senha root do MySQL e a senha root do PHPMyAdmin estão definidas como 12345678
, o projeto é instalado em /var/www/html/myproject
. Você pode mudar isso com certeza dentro de bootstrap.sh
. Desligue a caixa com vagrant halt
Você pode instalar o MINI incluindo Apache, MySQL, PHP e PHPMyAdmin, mod_rewrite, Composer, todas as configurações necessárias e até mesmo as senhas dentro do arquivo de configurações simplesmente baixando um arquivo e executando-o, toda a instalação será executada 100% automaticamente. Encontre o tutorial neste artigo do blog: Instale o MINI em 30 segundos dentro do Ubuntu 14.04 LTS
application/config/config.php
_install/
(com PHPMyAdmin, por exemplo).O MINI funciona sem qualquer configuração adicional. Você também pode colocá-lo dentro de uma subpasta, ele funcionará sem qualquer configuração adicional. Talvez útil: Um tutorial simples sobre como instalar o LAMPP (Linux, Apache, MySQL, PHP, PHPMyAdmin) no Ubuntu 14.04 LTS e o mesmo para o Ubuntu 12.04 LTS.
server {
server_name default_server _; # Listen to any servername
listen [::]:80;
listen 80 ;
root /var/www/html/myproject/public;
location / {
index index.php;
try_files / $uri / $uri / /index.php?url= $uri ;
}
location ~ .(php)$ {
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name ;
include fastcgi_params;
}
}
Uma discussão mais profunda sobre as configurações do nginx pode ser encontrada aqui.
O script usa mod_rewrite e bloqueia todo o acesso a tudo fora da pasta /public. Sua pasta/arquivos .git, arquivos temporários do sistema operacional, a pasta do aplicativo e tudo mais não estão acessíveis (quando configurados corretamente). Para solicitações de banco de dados o PDO é usado, então não há necessidade de pensar em injeção de SQL (a menos que você esteja usando versões extremamente desatualizadas do MySQL).
MINI vem com uma pequena ferramenta de depurador PDO customizada (encontre o código em application/libs/helper.php), tentando emular suas instruções PDO-SQL. É extremamente fácil de usar:
$ sql = " SELECT id, artist, track, link FROM song WHERE id = :song_id LIMIT 1 " ;
$ query = $ this -> db -> prepare ( $ sql );
$ parameters = array ( ' :song_id ' => $ song_id );
echo Helper:: debugPDO ( $ sql , $ parameters );
$ query -> execute ( $ parameters );
O projeto foi escrito em tempos de PHP5, mas com o lançamento do PHP7 não é mais possível nomear uma classe "Error", pois o próprio PHP agora possui uma classe Error interna. Renomear foi a solução mais simples, em comparação com outras opções como "ErrorController" etc., que adicionariam novos problemas, como nomes de arquivos em maiúsculas, etc. (que não funcionarão corretamente em algumas configurações).
Este projeto está licenciado sob a licença MIT. Isso significa que você pode usá-lo e modificá-lo gratuitamente em projetos privados ou comerciais.
E por falar nisso, também estou blogando no Dev Metal.
O caminho URL do aplicativo é traduzido diretamente para os controladores (= arquivos) e seus métodos dentro do aplicativo/controladores.
example.com/home/exampleOne
fará o que o método exampleOne() em application/controllers/home.php diz.
example.com/home
fará o que o método index() em application/controllers/home.php diz.
example.com
fará o que o método index() em application/controllers/home.php diz (fallback padrão).
example.com/songs
fará o que o método index() em application/controllers/songs.php diz.
example.com/songs/editsong/17
fará o que o método editsong() em application/controllers/songs.php diz e passará 17
como parâmetro para ele.
Autoexplicativo, certo?
Vejamos o método exampleOne() no controlador home (application/controllers/home.php): Isso simplesmente mostra o cabeçalho, o rodapé e a página example_one.php (em views/home/). Por intenção tão simples e nativa quanto possível.
public function exampleOne ()
{
// load view
require APP . ' views/_templates/header.php ' ;
require APP . ' views/home/example_one.php ' ;
require APP . ' views/_templates/footer.php ' ;
}
Vejamos o método index() no controlador de músicas (application/controllers/songs.php): Semelhante ao exampleOne, mas aqui também solicitamos dados. Novamente, tudo é extremamente reduzido e simples: $this->model->getAllSongs() simplesmente chama o método getAllSongs() em application/model/model.php.
public function index ()
{
// getting all songs and amount of songs
$ songs = $ this -> model -> getAllSongs ();
$ amount_of_songs = $ this -> model -> getAmountOfSongs ();
// load view. within the view files we can echo out $songs and $amount_of_songs easily
require APP . ' views/_templates/header.php ' ;
require APP . ' views/songs/index.php ' ;
require APP . ' views/_templates/footer.php ' ;
}
Para extrema simplicidade, todos os métodos de tratamento de dados estão em application/model/model.php. Com certeza isso não é muito profissional, mas é a implementação mais simples. Dê uma olhada na aparência de getAllSongs() em model.php: PDO puro e super simples.
public function getAllSongs ()
{
$ sql = " SELECT id, artist, track, link FROM song " ;
$ query = $ this -> db -> prepare ( $ sql );
$ query -> execute ();
return $ query -> fetchAll ();
}
O resultado, aqui $songs, pode então ser facilmente usado diretamente dentro dos arquivos de visualização (neste caso application/views/songs/index.php, em um exemplo simplificado):
<tbody>
<?php foreach ( $ songs as $ song ) { ?>
<tr>
<td> <?php if ( isset ( $ song -> artist )) echo htmlspecialchars ( $ song -> artist , ENT_QUOTES , ' UTF-8 ' ); ?> </td>
<td> <?php if ( isset ( $ song -> track )) echo htmlspecialchars ( $ song -> track , ENT_QUOTES , ' UTF-8 ' ); ?> </td>
</tr>
<?php } ?>
</tbody>
MINI é o sucessor do php-mvc. Como o php-mvc não forneceu uma estrutura MVC real (e várias pessoas reclamaram disso - o que é totalmente correto!), Renomeei e reconstruí o projeto.
... MINI é apenas uma ferramenta auxiliar simples que criei para meu trabalho diário, simplesmente porque era muito mais fácil de configurar e manusear do que frameworks reais. Para trabalho diário de agência, prototipagem rápida e projetos voltados para frontend está tudo bem, faz o trabalho e não há absolutamente nenhuma razão para discutir por que é "uma merda comparado ao Laravel", por que não segue vários princípios MVC ou por que não há suporte pessoal não remunerado ou nenhuma tradução para o russo ou coisas estranhas semelhantes. A trollagem contra projetos de código aberto (e seus autores) realmente atingiu dimensões insanas.
Escrevi isso gratuitamente, voluntariamente, em meu tempo livre e carreguei-o no GitHub para compartilhar. É totalmente gratuito, para uso privado e comercial. Se você não gosta, não use. Se você encontrar problemas, por favor escreva um ticket (e se você for muito legal: fico muito grato por qualquer commit!). Mas não bata, não reclame, não odeie. Somente pessoas más fazem isso.
Por favor, comprometa-se no branch de desenvolvimento (que contém a versão em desenvolvimento), não no branch master (que contém a versão testada e estável).
Dezembro de 2002
Agosto de 2016
Fevereiro de 2015
Dezembro de 2014
Novembro de 2014
Outubro de 2014
Setembro de 2014
Agosto de 2014
Junho de 2014
Abril de 2014
Janeiro de 2014
Apoie o projeto alugando um servidor na DigitalOcean ou apenas oferecendo um café em BuyMeACoffee.com. Obrigado! :)