Solução?
- A utilização de frameworks minimiza muito destes problemas
- Pode ser definido como a planta baixa de onde todos os sistemas serão construídos
- Programador focado no negócio (não reinventa a roda)
- Manutenção com menor custo
- Consistência e compatibilidade entre as aplicações
Frameworks em PHP
- Zend Framework;
- CakePHP;
- Symfoni;
- Prado;
- CodeIgniter;
[any material that should appear in print but not on the slide]
Frameworks em PHP
- Comparação
- Zend Framework;
- CakePHP;
- Symfoni;
- Prado;
- CodeIgniter;
[any material that should appear in print but not on the slide]
Frameworks em outras linguagens
- Rails (ruby);
- Django (python);
- Struts (J2EE);
[any material that should appear in print but not on the slide]
CakePHP
- Licença open-source (MIT);
- Compatível com PHP4 e PHP5;
- Baseado em RoR;
- Mapeamento Objeto-Relacional;
- Arquitetura MVC;
- Validações automáticas;
- CRUD automático;
- Componentes para construção das views (helpers) ;
- Boa documentação;
- Fácil de configurar;
- Extremamente simples
[any material that should appear in print but not on the slide]
CakePHP - Características
- Mapeamento Objeto-Relacional
- A framework enxerga cada tabela como uma classe, e cada registro da tabela como um objeto específico da classe
- Exemplo:
-
function index() {
function $this->Carro->id = 5;
$carro = $this->Carro->read();
print_r(carro);
}
[any material that should appear in print but not on the slide]
CakePHP - Características
- Model View Controller (MVC)
- Design pattern que separa a arquitetura do sistema em três camadas
- Model: - Lógica de negócios e dados da aplicação
- View: - Camada de visão, responsável por exibir os dados (pode ser uma página HTML, um arquivo PDF ou qualquer outra saída)
- Controller: - Camada controladora, recebe a requisiçao, acessa a classe modelo e retorna a view adequada
[any material that should appear in print but not on the slide]
CakePHP - Características
- Componentes para trabalhar na camada de visão, permitindo trabalhar com Ajax, formulários, JavaScript
- Semelhante ao conceito de tag-libs
-
[any material that should appear in print but not on the slide]
CakePHP - Características
- Validação automática das entradas de dados
- Na definição da classe modelo, é permitido configurar as validações dos atributos
- Ao tentar salvar um registro que viola a restrição de validação, uma mensagem de erro é gerada e colocada na sessão
- Exemplo
-
var $validate = array(
'titulo' => VALID_NOT_EMPTY,
'texto' => VALID_NOT_EMPTY,
'data' => VALID_NUMBER
);
/* permite inserir expressão regular na validação */
[any material that should appear in print but not on the slide]
CakePHP - Características
- Gera padrão CRUD (Create-Read-Update-Delete)automático
- Basta definir a variável $scaffold dentro da classe controladora
[any material that should appear in print but not on the slide]
CakePHP - Características
- Bake - Gerador de código automático
- O Bake é um script, que vem dentro do CakePHP, cuja função é gerar código automático da aplicação
./bake -p emsl2007 // cria uma estrutura para novo projeto chamado emsl2007
./bake.php -app emsl2007 // edita a configuração do projeto
[any material that should appear in print but not on the slide]
CakePHP - Características
- Configuração de rotas
- Permite configurar as urls da aplicação em um único arquivo
- Este recurso precisa do mod_rewrite do Apache habilitado
[any material that should appear in print but not on the slide]
Estrutura básica da framework
[any material that should appear in print but not on the slide]
Programando
- Vamos desenvolver uma pequena aplicação que irá gerenciar finanças pessoais
- Cada usuário possui N contas, cada conta possui N lançamentos
Modelagem
[any material that should appear in print but not on the slide]
Programando
- Antes de começar, vamos observar algumas convenções utilizadas pelo CakePHP
- Nome das PK -> id
- tabelas no plural (usuarios,contas,lancamentos)
- padrão de FK, nome da tabela mais campo id, usuario_id, conta_id
- relacionamento n-n, nome das tabelas no plural (em ordem alfabética), contas_usuarios
- Nome das classes modelo no singular e da controle no plural
Programando
- Mais um parênteses, vamos conhecer como o CakePHP trabalha com as associações entre as entidades
- hasOne associação 1-1
- hasMany associação 1-N
- belongsTo pertence a
- hasAndBelongsToMany associação N-N
Programando
- Início, vamos utilizar nosso amigo bake.php, ele irá nos ajudar na criação da nossa aplicação
-
./bake.php -p emsl2007 // criando uma nova aplicação
./bake.php -app emsl2007 // configurando a aplicação
Criando os Models / Views / Controllers
Programando
- Brincando com a aplicação
- Criando controlador e view da página principal
- Corrigindo alguns problemas
Referências
[any material that should appear in print but not on the slide]
Interação
- Dúvidas?
- Perguntas?
- Discussão?
- Arranca-rabo?