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
//Javascriptvar 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});
//Phppublic 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,242