Magic
Um framework web opensource escrito em PHP
Também pode chamar de toolkit ;)
https://github.com/gabriel-felipe/magic
Por
Gabriel Felipe
Magic o que?
E qual o roteiro dessa apresentação?
-
Introdução à MVC
- Introdução ao Magic
- O que muda nos css?
-
Bancos de dados
- Sistema de rotas
-
Ajax
- Manager
Introdução a MVC
Model-view-controller (MVC), em português modelo-visão-controlador, é um modelo de arquitetura de software que separa a representação da informação da interação do usuário com ele. O modelo (model) consiste nos dados da aplicação, regras de negócios, lógica e funções. Uma visão (view) pode ser qualquer saída de representação dos dados, como uma tabela ou um diagrama.
É possível ter várias visões do mesmo dado, como um gráfico de barras para gerenciamento e uma visão tabular para contadores. O controlador (controller) faz a mediação da entrada, convertendo-a em comandos para o modelo ou visão. As ideias centrais por trás do MVC são a reusabilidade de código e separação de conceitos.
Introdução a MVC
Introdução a MVC
Versão analogia a algo palpável (Maconha).
O Model seria esse cara ai da esquerda, quem cuida da plantação, ve o que presta, o que não presta, planta as sementinhas colhe as plantinhas...
A View, é o traficante. É quem leva o produto do Model até o usuário.
Mas reparem que o produto saiu da plantação como mato, e o traficante leva o produto para o usuário de uma maneira mais elaborada. Tem uma embalagem, foi pesado, ou seja o produto foi tratado antes. O cara que faz esse tratamento entre o que sai do model, e o que chega na view é o controller.
Uma Introdução ao Magic
O fluxo da requisição
Alguns dados sobre a produção de um app com o Magic:
Banco de dados
Template. (HTML/CSS)
O que muda no CSS?
Velocidade!
Poder
.border-radius (@radius: 5px) {
-webkit-border-radius: @radius;
-moz-border-radius: @radius;
border-radius: @radius;
}
/* Implementation */
#somediv {
.border-radius(20px);
}
if $browser == 'IE':
#browser-warning {display: block; background:#f00;}
else:
#browser-warning {display:none;}
end
Mais poder
<?php
/*Construindo um grid dinamicamente*/
$nColunas = 12;
$margin = "10px";
$totalGrid = "100%"
for($i=1;$i<=$gridColumns;$i++){
echo ".grid$i {lógica de montagem do grid aqui}";
?>
.box@(max width 300) p {font-size:12px;}
.box@(min width 700) p {font-size:18px; line-height: 32px}
Praticidade
Banco de Dados
E por último a DbConnect trata das conexões com o banco.
DbModel, Alguns Exemplos:
$carro = new DbModel("carros");
$carro->find(5);
echo $carro->titulo;
$informacoes = $carro->info();
print_r($informacoes); /*Retorna um array associativo entre as colunas e seus valores, por exemplo: Array( "id"=>"5",
"titulo"=>"Palio".... e por ai vai.
)
DbModelPlural
$carros = new DbModelPlural("carros");
$carros->where("ano < :ano", array("ano"=>2000));
$carros->destroy();
DbModel, a utilização real.
Gerenciamento de URL's
Gerenciamento de urls
Mapeando as URL's.
{
"admin" : { "admin/servicos" : { "route":"common_servicos" }, "admin/news/nova" : { "route":"common_news_nova" }, "admin/news" : { "route":"common_news" }, "admin/" : { "route":"common_home" } }, "public" : { "contato": {"route":"common_contato"}, "news": {"route":"common_news"}, "depoimentos": {"route":"common_news"}, "links": {"route":"common_links"}, "servicos":{"route": "common_servicos"}, "servico/{^[0-9]+$}":{"route":"common_servicos_info","id":"$1"}, "": {"route":"common_home"} }
}
Pegando as URL's
/*$this->url->get("route","parametros","scopo")*/
$linkServico = $this->url->get("common_servicos_info",array("id"=>9);
$linkHomeAdmin = $this->url->get("common_home",false,"admin");
Ajax
//Javascript
var ajax = new majax;
ajax.onSuccess = function(msg,data){
//callback em caso de sucesso
}
ajax.onFail = function(msg,data){
//Callback em caso de falha
}
ajax.post("route",{postParametros});
//Php
public function route(){
//Trata os parametros
//Para retornar com sucesso: echo $this->json->success(msg,dataArray);
//Para retornar com falha: echo $this->json->fail(msg,dataArray);
}
Manager
Manager, O que faz?
- Gerencia Scopos
- Adicionar Controllers
- Adicionar DbModels
- Configurar o Banco de Dados
- Verificar se as permissões de pasta estão ok
- Exibir logs de erro
- Abrigar a documentação
- Gerenciar Rotas
Era isso =P
magic
By gabrielfelipe
magic
- 2,051