SlideShare a Scribd company logo
1 of 112
Download to read offline
CakePHP
Tão fácil quanto fazer um bolo!
Roteiro


•   Conceitos
•   Framework
•   MVC
•   CakePHP
Quem sou eu...


•   Rangel Xavier – 25 anos
•   Sistemas de Informação
•   Aluno do Mestrado em Eng. de Software
•   Design & Desenvolvedor
•   J!platform/CSS/HTML
•   PHP
O que é?


• O CakePHP é um framework para
  desenvolvimento de aplicações e
  websites,   de      forma que os
  programadores/desenvolvedores
  possam trabalhar simples.
O que é?


• Qualquer programador, seja de qualquer
  nível, pode sim, aprender o cakePHP
  tranquilamente, pois, além de uma vasta
  documentação, o framework é muito bem
  organizado. Tudo       isso  totalmente
  gratuito.
História


• Michal Tatarynowicz
• Ano 2005
• Quando Ruby on Rails começou a
  ganhar     popularidade entre os
  desenvolvedores.
• Versão 2.x
Motivos para utilizar


•   Ativo e com comunidade amigável;
•   Licença flexível;
•   Compatibilidade com PHP 4 e PHP 5;
•   Integrando funcionalidade CRUD (Create, Read, Update and
    Delete, ou Criar, Ler, Atualizar e Excluir) para interagir com o
    banco de dados;
•   Aplicações scaffolding;
•   Geração de código;
•   Arquitetura MVC (Model, View, Controller, ou Modelo, Visões,
    Controlador);
•   Requisições ao expedidor com clareza, URLs personalizáveis e
    rotas;
Motivos para utilizar


• Validações internas;
• Templates rápidos e flexíveis (Sintaxe PHP e com
  ajudantes);
• Ajudantes para usar AJAX, JavaScript, HTML, formulários e
  outros nas visões;
• Componentes de E-mail, Cookie, Segurança, Sessões,
  Manipulação de Requisições e outros;
• Flexibilidade com cache;
• Internacionalização;
• Funciona em qualquer subdiretório do seu website, com
  poucas configurações no Apache
O que é aprender?


•   Orientação Objeto
•   PHP OO
•   HTML e CSS
•   JS
•   Convenções e particularidades do
    cakephp
POO
Revisal, que tal?
Objetos e Classes


• Objetos reais possuem duas
  características. Estado e
  Comportamento. Por exemplo, um
  cachorro tem nome, raça, idade, tamanho
  e etc, e existem também
  comportamentos, como abanar o rabo,
  latir e “acasalam nas pernas alheias”.
Objetos e Classes


• Exemplo mais simples:
• No objeto lâmpada:
  – Estado: Acesa e Apagada
  – Comportamento: Ser acesa e ser apagada;
• Então, tudo pode ser um objeto. Concordam?
• A partir de agora, ESTADO = ATRIBUTO e
  COMPORTAMENTO = MÉTODOS/FUNÇÕES
Objetos e Classes


• Classes são a base ou template para
  criação do nosso objeto. Ela define
  nossos atributos e nossos métodos
  utilizados.
• Vamos criar nossa primeira classe.
Objetos e Classes


• Classe
  – Primeiro passo é criarmos nosso arquivo
    animal.class.php.
  – Iremos criar a Class Animal, com atributos
    espécie, raça, nome, cor;
  – Iremos também criar o nosso
    compartamento, ops! nosso método falar;
                                             5 min
Objetos e Classes


• Objeto
  – Agora criaremos o objeto baseado na nossa
    classe animal.
  – Crie um objeto $animal e inicialize
    (chamemos a partir de agora de instanciar).
  – Palavra chave: new

                                            5 min
Objetos e Classes


• Voltar para Classe
  – Criar nosso método falar();
  – Adicionaremos um novo atributo chamado
    som, e iremos chama-lo dentro de nosso
    método;
  – Vamos fazer juntos!
Herança


• O processo de “ramificar” uma classe, chama-se
  Herança.
• Como assim tio?
• Tenho uma classe Cachaça, com atributos,
  $teor_alcoolico, $ml e $idade, podemos criar
  uma classe chamada Uisque, a qual, irá herdar
  todas as características da classe pai.
• Vamos exemplificar 
Esquenta!


• Criar uma Classe Pessoa, com atributos,
  nome, altura, peso, ano de nascimento;
• Criar os métodos
  – calcularIdade();
  – calcularIMC();
  – IMC = Massa / Altura²
Frameworks de
desenvolvimento
PHP do “tempo do ronca”


 • Falta de Padrões;
 • Programação Orientada a Gambiarra,
   tornando o programador “doidim”;
 • Qualquer um desenvolvia;
 • Linguagem para pequenos projetos;
 • Script Kiddies, sobrinhos e “amigos que
   mexem com informática”
PHP evolução


• OO verdadeiro;
• Padrões em projetos;
• Inúmeros       projetos   criados,
  documentados: FRAMEWORKS!
O que são?


• É uma coleção de
  códigos-fonte,
  classes,   funções,
  técnicas          e
  metodologias que
  facilitam         o
  desenvolvimento
  de novos softwares
O que são comum
entre eles?


• Ao olharmos atentamente para os
  principais frameworks de
  desenvolvimento para PHP, podemos
  observar que algumas tecnologias e
  técnicas são comuns à maioria deles.
Design Patterns


• Padrões de Projetos, são formas já
  testadas e documentadas de se resolver
  certo tipo de problemas.
Modelo, Controle e
Visão

• O padrão MVC é a separação de lógica e
  apresentação, sendo que isso favorece o
  trabalho em equipe.
• Dessa forma, qualquer mudança, por
  exemplo, na apresentação, teria pouco
  ou nenhum impacto nas demais camadas
  da aplicação.
Active Record


• Facilita a manipulação de dados contidos em uma
  base de dados por aplicações desenvolvidas com
  o paradigma orientadas a objetos.
• Desta forma, não é necessário que o
  desenvolvedor conheça uma linguagem de
  manipulação de dados como SQL, além de manter
  toda a aplicação desenvolvida no paradigma
  orientado a objetos.
AJAX


• Existem diversas bibliotecas para se utilizar as
  funcionalidades do AJAX em suas aplicações
  facilmente. Entre elas, pode-se citar o Dojo e o
  Prototype. Alguns frameworks utilizam estas
  bibliotecas para facilitar o desenvolvimento de
  aplicações. O CakePHP e o Symfony, são
  principais neste quesito.
Internacionalização


• É o processo de permitir que seja facilmente
  modificada o idioma da interface e de
  mensagens da aplicação.
• Para facilitar o desenvolvimento deste tipo de
  aplicações, é necessário que o framework
  utilizado possua suporte a essa característica.
• A partir do CakePHP 2.x, essa funcionalidade foi
  implementada.
Zend Framework
   Particularidades
Caracteristicas


• Surgiu em 2005;
• Versão atual: 2.0.2 (21 de setembro de 2012);
• Zend Technologies, empresa mantenedora do
  PHP;
+e-


•   Segurança;
•   Certificação;
•   Vários componentes prontos;
•   Muitas configurações; (-)
•   Arquivo bootstrap manual; (-)
•   Curva de aprendizagem alta; (-)
•   ORM #fail; (-)
•   http://framework.zend.com/
Code Igniter
 Particularidades
Caracteristicas


• Surgiu em 2006;
• 2.1.1 (20 de junho de 2012);
• Rasmus Lerdorf, aprovou!
+e-


•   Pequeno e Leve;
•   Sem tantas configurações;
•   Framework mais utilizado;
•   2º lugar no Ranking de Frameworks PHP (Europa);
•   Documentação boa;
•   ORM #fail; (Data Mapper)
•   E muito muito muito mais 
Laravel
Particularidades
Caracteristicas


• Surgiu em 2011;
• 3.2.7;
• Rasmus Lerdorf, aprovou!
+e-


•   Limpo e Leve;
•   Baseado em “Routes”;
•   ORM o/;
•   Documentação; (-)
•   Material em Português; (-)
•   www.laravel.com
Engatinhar
Começando a entender nosso
        CakePHP
Estrutura de Pastas


 cakephp/
       /app/
       /lib/
       /plugins/
       /vendors/
Diretório “pai”

/app/
        /config – arquivos de configuração. Ex.: DB, Email
        /console – onde fica o bake (feito tudo pelo terminal)
        /controller – onde fica nossos controladores
        /lib – bibliotecas de terceiros
        /locale – pasta para colocar arquivos de idioma
        /model – onde fica nosso models
        /plugins – local de nossos plugins
        /test – para colocar nossos testes unitários.
        /tmp – os arquivos temporarios/cache/logs.
        /vendor – scritps, classes, componentes de terceiros.
        /view – arquivos da view
        /webroot – arquivos de estilo, javascripts e afins.
Outros conceitos


• Helpers: “Ajudantes”, ele auxiliam a
  criação de algo dentro da aplicação. Ex.:
  Formulário, Gerenciamento de Cache,
  HTML entre outros;
• Cada controller o qual é necessário
  utilização de algum helper, pode ser
  informado por meio de uma array $helpers.
  Veja a sintaxe:
Helpers


class MeuController extends AppController
{
  public $helpers = array(‘form’, ‘html’);

}
Helpers Padrões

•   CacheHelper
•   FormHelper
•   HtmlHelper
•   JsHelper
•   NumberHelper (Número e formatos de moedas)
•   Paginator
•   RSS
•   SessionHelper
•   TextHelper (Formação de textos “inteligentes”);
•   TimeHelper (Formatação de data e hora)
Scaffolding


• É uma técnica que permite ao
  desenvolvedor definir e criar uma
  aplicação básica que possa inserir,
  selecionar, atualizar e excluir objetos,
  inserindo apenas o atributo/objeto
  $scaffold em seu controller.
Sintaxe Scaffolding


<?php
class MeuController extends
  AppController {
public $scaffold;
}
Componentes


• Componentes (components) são pacotes
  com funções que são usadas para serem
  utilizada entre os controllers.
• Se você está querendo copiar e colar coisas
  entre seus controllers, talvez seja uma boa
  ideia considerar a possibilidade de
  empacotar estas funcionalidades em
  componentes.
Componentes Padrões


    O CakePHP também já vem com uma quantidade fantástica de
    componentes incluídos, que você pode usar para lhe ajudar
    com:
•   Segurança
•   Sessões
•   Lista de Controle de Acesso (do inglês ACL, Access control
    lists)
•   Emails
•   Cookies
•   Autenticação
•   Tratamento de Requisições
Requisições (URLs)


http://localhost/controller/function/param
  entro

Exemplo real:
http://localhost/usuarios/deletar/2/
Teste
Verdadeiro ou Falso


• O Helpers auxiliam o desenvolvedor na
  criação de Sessões e manipulação no BD;
• Os componentes são conjunto de códigos
  que são utilizados várias vezes entre os
  Controllers;
• O diretório principal do CakePHP é o lib;
• O scaffolding faz uma simulação automática
  de minha aplicação;
Verdadeiro ou Falso


• O Helpers auxiliam o desenvolvedor na
  criação de Sessões e manipulação no BD;
• Os componentes são conjunto de códigos
  que são utilizados várias vezes entre os
  Controllers;
• O diretório principal do CakePHP é o lib;
• O scaffolding faz uma simulação automática
  de minha aplicação;
Camada “C”
  Controller
Controllers


• Os controllers fornecem uma série de
  métodos que são chamados de ações.
  Ações são métodos em um controller
  que manipulam requisições. Por padrão,
  todos os métodos públicos em um
  controller são ações e acessíveis por
  urls.
Controllers


• A classe AppController é a mãe de
  todos os outros controllers da sua
  aplicação. O próprio AppController é
  estendida da classe Controller que faz
  parte da biblioteca do CakePHP.
• Todos seus controllers devem ser
  estendida desta.
Controllers


<?php
class MeuController extends AppController{

}
Controllers


• Convenção:

<?php
class NomeDoSeuControllerEmCamelCase extends AppController{

}
Controllers
• Atributos:

$name
O atributo deve ser definido com o nome do controller.
Normalmente é apenas a forma plural do nome do model principal
que o controller usa. Esta propriedade não é requerida mas salva o
CakePHP de ter que flexionar o nome do model para chegar no
valor correto.
Controllers


$this->set
Enviar atributo para view;


Sintaxe
$this->set(‘atributo’, ‘conteúdo do atributo’);
Controllers


save(“dados_a_serem_salvos_no_db”)
Salva dados no banco;


Sintaxe
$this->MyModel->save($this->data);
Controllers


delete(“dados_a_serem_deletados_no_db”)
Deleta dados do banco;


Sintaxe
$this->MyModel->delete($id);
Controllers


redirect()
Controle de Fluxo e redirecionamento de páginas;


Sintaxe
$this->redirect(array(‘controller’ => ‘usuario’))
Camada “V”
   Views
Views


• A camada responsável pela visualização
  da interface. Aqui ficará nosso HTML e o
  mínimo de PHP possível.
• 90% HTML e 10% PHP;
Views


• Para cada controller, é necessário criar
  um diretório com o seu nome do e
  dentro dela os arquivos com os nomes
  de cada ação.
• Certinho?
Views - Exemplo


• Existe um Controller chamado Alunos, e neste
  controller existe uma ação inserirnota() e
  calcularmedia();
• Irei criar uma pasta dentro de /Views/ com o
  nome do Controller, Alunos, e dentro dessa
  pasta, cada ação do Controller, ganhará um
  arquivo específico com a extensão .ctp;
• Ficando desta maneira
Views
Camada “M”
   Models
Models


• Os models (modelos) formam o coração
  de sua aplicação. Tratam das validações,
  armazenamento e recuperação dos seus
  dados
Models


• Nossa Model deve ser no singular
  herdando de AppModel. Se nosso
  Controller chama Alunos, nossa model
  irá se chamar Aluno.
CVM ops! MVC


• Controller camada de Negócios;
• View camada de Visualização;
• Model camada de Persistência;

• Dramatização!
Baixando o CakePHP


• Acessar o site oficial do
  http://cakephp.org/

• Pelo GitHub
  https://github.com/cakephp/cakephp/zi
  pball/2.2.3
Descompactar


• Descompacte o arquivo dentro do
  servidor local.
• Renomear a pasta para /projetocake
                                       10 min
Configuração


• Gerar outro novo código de segurança,
  nosso atributo security.salt no arquivo
  config/core.php
• Para simular um projeto real, iremos gerar
  uma chave segura.
• http://www.md5encrypter.com/
• Gerar outro código para o security.
  cipherSeed.
Configuração BD


• Próximo passo é configurar o banco de
  dados. No nosso arquivo
  database.php.default
• Precisamos criar nosso banco de dados
  e nossa tabela.
• Veja:
Banco de Dados


•   Padrão das tabelas, sempre no PLURAL.
•   Nome do Banco: projetocake
•   Nome da Tabela: Noticias
•   Campos: id, titulo, conteudo, autor,
    created e modified
Revisão


• Tabelas do Banco: Plural
• Model: Singular
• Controller: Plural seguido o nome
  Controller;
Teste
Pergunta 01


• Quem é o responsável pela comunicação
  dos dados com o Banco?
a) View
b) Database
c) Model
d) DataMapper
Verdadeiro ou Falso


• Para cada método do meu Controller, é
  necessário criar um arquivo .ctp dentro da
  pasta com o nome de meu Controller;
• Models são no singular e as tabelas no
  banco de dados;
• As validações são feita no Controller
• As views é a parte da aplicação onde fica
  mais código PHP.
Verdadeiro ou Falso


• Para cada método do meu Controller, é
  necessário criar um arquivo .ctp dentro da
  pasta com o nome de meu Controller;
• Models são no singular e as tabelas no
  banco de dados;
• As validações são feita no Controller;
• As views é a parte da aplicação onde fica
  mais código PHP;
Meu 1º Controller
Meu 1º Controller


• Criar um arquivo NoticiasController.php
• Criar Class com o mesmo nome do
  arquivo;
• Fazer a herança;
• Inicializar o atributo $name;

                                 Tempo: 15 min
Meu 1º Controller


• Vamos utilizar na prática agora no
  Scaffolding;
• Para isto basta inicializar nosso atributo
  public $scaffold;
• Vamos olhar a mágica!
Meu 1º Controller


• Por padrão, o cakePHP busca o método
  index();
• Então criaremos o método index();
• Outro erro? Por que?
• Criamos o nosso arquivo index.ctp em
  nossa view.
Meu 1º Controller


• Enviar um atributo conteúdo um valor,
  por exemplo, “Todos as noticias”.
• Para isso, basta utilizar a função set(),
  visto anteriormente;
  $this->set(‘atributo’, ‘valor’);

                                    Tempo: 15 min
Minha 1ª view


• Vamos colocar apenas um titulo em html
  e “echoar” o nome de nossa variável,
  que enviamos para nossa view.
  Funcionou?

o/o/o/o/o/o/o/o/o/o/o/o/o/
Minha 1ª Model


•   Essa é com vocês!
•   Como cria uma model?
•   Singular ou Plural?
•   Herda de quem?


                           Tempo: 15 min
Inserir dados


 Inserir dados direto no banco, para
 testarmos nossa capturar de dados;

 Entre no seu SGBD e coloquem textos
 fictícios em nossos campos;

                                Tempo: 10 min
Capturar dados


• Para capturar os dados do banco
  utilizando find();

 $this->Model->find(‘all’);
Find()


• O método find() captura os dados da
  base;
• Os parâmetros possíveis para esse
  método são:
  'all', 'first','count', 'list', 'neighbors' or 'thr
  eaded'
Find(‘all’)


• Esse método retorna para nossa view os
  dados do banco em forma de array.
Editar a view


 var_dump($array);

 Essa função exibe a estrutura/conteudo de
 um array.

 Vamos utilizar essa função em nossa view.
Editar a view

<table>
    <tr>
           <td>ID</td>
           <td>Titulo</td>
           <td>Data</td>
           <td>Ações</td>
    </tr>
    <?php foreach ($noticias as $noticia) { ?>
    <tr>
          <td><?php echo $noticia[‘Noticia']['id'];?></td>
          <td><?php echo $noticia[‘Noticia'][‘titulo'];?></td>
          <td><?php echo $noticia[‘Noticia'][‘data'];?></td>
          <td></td>
    </tr>
    <?php }?>
</table>
Index Finalizado


• Com isso finalizamos nosso primeiro
  método!
• Criamos o método index();
• Criamos o arquivo index.ctp;
• Enviamos para a view todos os dados do
  banco;
• Editamos o layout da View;
Método delete()


• O que vamos utilizar?

  – Passar por parâmetro da função o id ao qual
    quer deletar. Se existir, utilize o método
    $this->Model->delete($id);
  – Nada na view;

                                     Tempo: 20 min
Método adicionar()


• Missão agora é criar nosso método
  adicionar().
Método adicionar()


• O que vamos utilizar?

  – $this->Model->save($this->data);
  – $this->data;
     • É um array contendo os dados enviado da view, via
       POST ou GET.
  – Vamos utilizar nosso primeiro Helper, para criar
    nosso Formulário na camada View, no arquivo
    adicionar.ctp;
FormHelper


FormHelper::create(string $model = null, array
  $options = array());

    É o método para iniciar a criação do
 nosso formulário. Ele que criará o
 cabeçalho de nosso formulário. Podemos
 definir o method, action e name do
 formulário. Por padrão o method é POST;
FormHelper


<?php echo $this->Form->create('User',
  array('action' => 'login')); ?>

 Saida:

<form id="UserLoginForm" method="post"
  action="/users/login">
FormHelper


• Para cada campo do nosso formulários,
  os “inputs” é o FormHelper oferece um
  método simples para isso.

 echo $this->Form->input(‘campo',
 array('label' => ‘Minha Label'));
FormHelper


 <?php echo $this->Form->end('Finish'); ?>

 Saída:

 <div class="submit"> <input type="submit"
 value="Finish" /> </div> </form>
Criar view adicionar


     Vocês vão criar todos os campos que
 desejamos no Formulário de Adicionar,
 utilizando o FormHelper e em seguida
 iremos testar nossa aplicação.



                                Tempo: 30 min
SetFlash


    Para uma mensagem de alerta nos
 controllers, o Componente Session nos
 da um método para isto. O método
 SetFlash.

 $this->Session->SetFlash(‘Mensagem’);
Redirect


    Para redirecionarmos de um
 controller para outro, o CakePHP nos
 disponibiliza um método para isto.

 $this->redirect(array(‘action’=>’pra
 onde vai’))
HtmlHelper


     O CakePHP também disponibiliza um
 Helper para o HTML dentro de nossas
 views, veremos agora alguns métodos
 utilizado.
HtmlHelper

HtmlHelper::image(string $path, array $options = array())
Parameters:
$path (string) – Path to the image.
$options (array) – An array of html attributes.

Exemplo:
echo $this->Html->image('cake_logo.png', array('alt' => 'CakePHP'));
Saida:
<img src="/img/cake_logo.png" alt="CakePHP" />

O caminho padrão das imagens é o: /app/webroot/img/.:
HtmlHelper

HtmlHelper::link(string $title, mixed $url = null, array $options =
    array(), string $confirmMessage = false)
Parameters:
$title (string) – O texto a ser exibido;
$url (mixed) – Para onde será enviado;
$options (array) – An array of html attributes.

Exemplo:
echo $this->Html->link('Enter', '/pages/home', array('class' => 'button',
   'target' => '_blank'));
Saida:
<a href="/pages/home" class="button" target="_blank">Enter</a>
Método view()



public function view($id = null) {
    $this->Model->id = $id;
    $this->set(‘atributo', $this->Model->read());
}
View.ctp


<h1><?php echo
 $atributo['Model']['titulo']?></h1>

<p><small>Created: <?php echo
 $atributo['Model']['created']?></small></p>

<p><?php echo
 $atributo['Model']['conteudo']?></p>
Exercício

      Método Listar, para exibir o conteúdo.

 $titulo
 Feito por: $autor
 $conteudo
 $data
 <tr>

 http://localhost/noticias/listarNoticias

 Titulo deve apostar para o método View
                                               Tempo: 40 min
Exercício


    Criar uma calculadora, com métodos
 somar, subtrair, dividir e multiplicar,
 passando os valores apenas pela URL.
Exercício


     Criar uma calculadora, com métodos
 somar, subtrair, dividir e multiplicar,
 passando os valores apenas pela URL,
 utilizando o FormHelper

More Related Content

What's hot

Introdução à Corrosão - Autor desconhecido
Introdução à Corrosão - Autor desconhecidoIntrodução à Corrosão - Autor desconhecido
Introdução à Corrosão - Autor desconhecidoLaura Marques
 
Implantando e escalando kubernetes com rancher
Implantando e  escalando kubernetes com rancherImplantando e  escalando kubernetes com rancher
Implantando e escalando kubernetes com rancherClaudemir de Almeida Rosa
 
BANCO DE DADOS RELACIONAIS
BANCO DE DADOS RELACIONAIS BANCO DE DADOS RELACIONAIS
BANCO DE DADOS RELACIONAIS Antonio Pedro
 
Programação Orientada a objetos em Java
Programação Orientada a objetos em JavaProgramação Orientada a objetos em Java
Programação Orientada a objetos em JavaDenis L Presciliano
 
Curso Java Básico - Aula 01
Curso Java Básico - Aula 01Curso Java Básico - Aula 01
Curso Java Básico - Aula 01Natanael Fonseca
 
Análise instrumental aula1 introducao
Análise instrumental   aula1 introducaoAnálise instrumental   aula1 introducao
Análise instrumental aula1 introducaoPânico Final
 
Ciclo de vida de software
Ciclo de vida de softwareCiclo de vida de software
Ciclo de vida de softwarediha36
 
71601130 principais-metodos-de-prevencao-de-corrosao
71601130 principais-metodos-de-prevencao-de-corrosao71601130 principais-metodos-de-prevencao-de-corrosao
71601130 principais-metodos-de-prevencao-de-corrosaoProfjorge Silva
 
Ciências dos Materiais - Aula 16 e 17 - Apresentação dos Diagramas de fases
Ciências dos Materiais - Aula 16 e 17 - Apresentação dos Diagramas de fasesCiências dos Materiais - Aula 16 e 17 - Apresentação dos Diagramas de fases
Ciências dos Materiais - Aula 16 e 17 - Apresentação dos Diagramas de fasesFelipe Machado
 
Estrutura de Dados II - Apresentação da Disciplina
Estrutura de Dados II - Apresentação da DisciplinaEstrutura de Dados II - Apresentação da Disciplina
Estrutura de Dados II - Apresentação da DisciplinaDaniel Arndt Alves
 
Desenvolvimento Web com PHP - Aula 1
Desenvolvimento Web com PHP - Aula 1Desenvolvimento Web com PHP - Aula 1
Desenvolvimento Web com PHP - Aula 1Thyago Maia
 
Defeitos cristalinos
Defeitos cristalinosDefeitos cristalinos
Defeitos cristalinosJb Alves
 
Modelos de ciclo de vida de software
Modelos de ciclo de vida de softwareModelos de ciclo de vida de software
Modelos de ciclo de vida de softwareYuri Garcia
 
API de segurança do Java EE 8
API de segurança do Java EE 8API de segurança do Java EE 8
API de segurança do Java EE 8Helder da Rocha
 
Apostilas - cliente servidor - aula 1 - fabiula
Apostilas - cliente servidor - aula 1 - fabiulaApostilas - cliente servidor - aula 1 - fabiula
Apostilas - cliente servidor - aula 1 - fabiulaDaniel Silveira
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Softwareelliando dias
 

What's hot (20)

Introdução à Corrosão - Autor desconhecido
Introdução à Corrosão - Autor desconhecidoIntrodução à Corrosão - Autor desconhecido
Introdução à Corrosão - Autor desconhecido
 
Implantando e escalando kubernetes com rancher
Implantando e  escalando kubernetes com rancherImplantando e  escalando kubernetes com rancher
Implantando e escalando kubernetes com rancher
 
Cotidiano de ácidos, bases e sais.
Cotidiano de ácidos, bases e sais.Cotidiano de ácidos, bases e sais.
Cotidiano de ácidos, bases e sais.
 
BANCO DE DADOS RELACIONAIS
BANCO DE DADOS RELACIONAIS BANCO DE DADOS RELACIONAIS
BANCO DE DADOS RELACIONAIS
 
Programação Orientada a objetos em Java
Programação Orientada a objetos em JavaProgramação Orientada a objetos em Java
Programação Orientada a objetos em Java
 
Corrosão seminário 01
Corrosão seminário 01Corrosão seminário 01
Corrosão seminário 01
 
Curso Java Básico - Aula 01
Curso Java Básico - Aula 01Curso Java Básico - Aula 01
Curso Java Básico - Aula 01
 
Interação entre imperfeições cristalinas
Interação entre imperfeições cristalinasInteração entre imperfeições cristalinas
Interação entre imperfeições cristalinas
 
Análise instrumental aula1 introducao
Análise instrumental   aula1 introducaoAnálise instrumental   aula1 introducao
Análise instrumental aula1 introducao
 
Ciclo de vida de software
Ciclo de vida de softwareCiclo de vida de software
Ciclo de vida de software
 
71601130 principais-metodos-de-prevencao-de-corrosao
71601130 principais-metodos-de-prevencao-de-corrosao71601130 principais-metodos-de-prevencao-de-corrosao
71601130 principais-metodos-de-prevencao-de-corrosao
 
Modelos de base de dados
Modelos de base de dadosModelos de base de dados
Modelos de base de dados
 
Ciências dos Materiais - Aula 16 e 17 - Apresentação dos Diagramas de fases
Ciências dos Materiais - Aula 16 e 17 - Apresentação dos Diagramas de fasesCiências dos Materiais - Aula 16 e 17 - Apresentação dos Diagramas de fases
Ciências dos Materiais - Aula 16 e 17 - Apresentação dos Diagramas de fases
 
Estrutura de Dados II - Apresentação da Disciplina
Estrutura de Dados II - Apresentação da DisciplinaEstrutura de Dados II - Apresentação da Disciplina
Estrutura de Dados II - Apresentação da Disciplina
 
Desenvolvimento Web com PHP - Aula 1
Desenvolvimento Web com PHP - Aula 1Desenvolvimento Web com PHP - Aula 1
Desenvolvimento Web com PHP - Aula 1
 
Defeitos cristalinos
Defeitos cristalinosDefeitos cristalinos
Defeitos cristalinos
 
Modelos de ciclo de vida de software
Modelos de ciclo de vida de softwareModelos de ciclo de vida de software
Modelos de ciclo de vida de software
 
API de segurança do Java EE 8
API de segurança do Java EE 8API de segurança do Java EE 8
API de segurança do Java EE 8
 
Apostilas - cliente servidor - aula 1 - fabiula
Apostilas - cliente servidor - aula 1 - fabiulaApostilas - cliente servidor - aula 1 - fabiula
Apostilas - cliente servidor - aula 1 - fabiula
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Software
 

Viewers also liked

CakePHP - Aprendendo a fazer o primeiro bolo
CakePHP - Aprendendo a fazer o primeiro boloCakePHP - Aprendendo a fazer o primeiro bolo
CakePHP - Aprendendo a fazer o primeiro boloelliando dias
 
Conceitos básicos de AEDS
Conceitos básicos de AEDSConceitos básicos de AEDS
Conceitos básicos de AEDSPablo Silva
 
Assembly para pc-25paginas
Assembly para pc-25paginasAssembly para pc-25paginas
Assembly para pc-25paginasMikeNandes
 
CakePHP com sotaque brasileiro
CakePHP com sotaque brasileiroCakePHP com sotaque brasileiro
CakePHP com sotaque brasileiroJuan Basso
 
Glosario de qbasic liliana
Glosario de qbasic lilianaGlosario de qbasic liliana
Glosario de qbasic lilianakhjhjhjh
 
Análise assintótica
Análise assintóticaAnálise assintótica
Análise assintóticaPablo Silva
 
C# .NET - Um overview da linguagem
C# .NET - Um overview da linguagem C# .NET - Um overview da linguagem
C# .NET - Um overview da linguagem Claudson Oliveira
 
Dicas para aumentar a performance de um software PHP
Dicas para aumentar a performance de um software PHPDicas para aumentar a performance de um software PHP
Dicas para aumentar a performance de um software PHPAlmir Neto
 
Relações de recorrência
Relações de recorrênciaRelações de recorrência
Relações de recorrênciaPablo Silva
 
Otimizacao de websites em PHP
Otimizacao de websites em PHPOtimizacao de websites em PHP
Otimizacao de websites em PHPFelipe Ribeiro
 
CakePHP e o desenvolvimento rápido
CakePHP e o desenvolvimento rápidoCakePHP e o desenvolvimento rápido
CakePHP e o desenvolvimento rápidoIvan Rosolen
 
Trabalho cobol e basic
Trabalho cobol e basicTrabalho cobol e basic
Trabalho cobol e basicDaniel Carrara
 
Análise da complexidade de algoritmos
Análise da complexidade de algoritmosAnálise da complexidade de algoritmos
Análise da complexidade de algoritmosPablo Silva
 

Viewers also liked (20)

CakePHP - Aprendendo a fazer o primeiro bolo
CakePHP - Aprendendo a fazer o primeiro boloCakePHP - Aprendendo a fazer o primeiro bolo
CakePHP - Aprendendo a fazer o primeiro bolo
 
Funções em C
Funções em CFunções em C
Funções em C
 
Conceitos básicos de AEDS
Conceitos básicos de AEDSConceitos básicos de AEDS
Conceitos básicos de AEDS
 
Recursividade
RecursividadeRecursividade
Recursividade
 
Introdução ao PHP
Introdução ao PHPIntrodução ao PHP
Introdução ao PHP
 
Assembly para pc-25paginas
Assembly para pc-25paginasAssembly para pc-25paginas
Assembly para pc-25paginas
 
CakePHP com sotaque brasileiro
CakePHP com sotaque brasileiroCakePHP com sotaque brasileiro
CakePHP com sotaque brasileiro
 
Glosario de qbasic liliana
Glosario de qbasic lilianaGlosario de qbasic liliana
Glosario de qbasic liliana
 
Apostila cobol
Apostila cobolApostila cobol
Apostila cobol
 
PROGRAMAS QBASIC
PROGRAMAS QBASICPROGRAMAS QBASIC
PROGRAMAS QBASIC
 
Análise assintótica
Análise assintóticaAnálise assintótica
Análise assintótica
 
C# .NET - Um overview da linguagem
C# .NET - Um overview da linguagem C# .NET - Um overview da linguagem
C# .NET - Um overview da linguagem
 
Dicas para aumentar a performance de um software PHP
Dicas para aumentar a performance de um software PHPDicas para aumentar a performance de um software PHP
Dicas para aumentar a performance de um software PHP
 
Linguagem C - Uniões
Linguagem C - UniõesLinguagem C - Uniões
Linguagem C - Uniões
 
Linguagem C - Estruturas
Linguagem C - EstruturasLinguagem C - Estruturas
Linguagem C - Estruturas
 
Relações de recorrência
Relações de recorrênciaRelações de recorrência
Relações de recorrência
 
Otimizacao de websites em PHP
Otimizacao de websites em PHPOtimizacao de websites em PHP
Otimizacao de websites em PHP
 
CakePHP e o desenvolvimento rápido
CakePHP e o desenvolvimento rápidoCakePHP e o desenvolvimento rápido
CakePHP e o desenvolvimento rápido
 
Trabalho cobol e basic
Trabalho cobol e basicTrabalho cobol e basic
Trabalho cobol e basic
 
Análise da complexidade de algoritmos
Análise da complexidade de algoritmosAnálise da complexidade de algoritmos
Análise da complexidade de algoritmos
 

Similar to Slide Aula - Curso CakePHP

Python mudando o modo de desenvolver para a internet
Python mudando o modo de desenvolver para a internetPython mudando o modo de desenvolver para a internet
Python mudando o modo de desenvolver para a internetMarcos Petry
 
Python mudando o modo de desenvolver para a web - Marcos Daniel Petry
Python mudando o modo de desenvolver para a web  - Marcos Daniel PetryPython mudando o modo de desenvolver para a web  - Marcos Daniel Petry
Python mudando o modo de desenvolver para a web - Marcos Daniel PetryTchelinux
 
Cakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHPCakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHPArlindo Santos
 
Carreira de Desenvolvimento
Carreira de DesenvolvimentoCarreira de Desenvolvimento
Carreira de DesenvolvimentoAlvaro Viebrantz
 
PHP Turbinado com CodeIgniter - Conisli 2011
PHP Turbinado com CodeIgniter - Conisli 2011PHP Turbinado com CodeIgniter - Conisli 2011
PHP Turbinado com CodeIgniter - Conisli 2011Evaldo Junior
 
Zend Framework Estrutura e TDD
Zend Framework Estrutura e TDDZend Framework Estrutura e TDD
Zend Framework Estrutura e TDDPHP Day Curitiba
 
Curso PHP UNIFACS 2014.1 – Frameworks
Curso PHP UNIFACS 2014.1 – FrameworksCurso PHP UNIFACS 2014.1 – Frameworks
Curso PHP UNIFACS 2014.1 – FrameworksJonata Weber
 
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e ZendAnálise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e ZendThiago Sinésio
 
Ruby on Rails: um estudo de viabilidade em ambientes empresariais
Ruby on Rails: um estudo de viabilidade em ambientes empresariaisRuby on Rails: um estudo de viabilidade em ambientes empresariais
Ruby on Rails: um estudo de viabilidade em ambientes empresariaisRodrigo Recio
 
Construindo aplicações Cloud Native em Go
Construindo aplicações Cloud Native em GoConstruindo aplicações Cloud Native em Go
Construindo aplicações Cloud Native em GoAlvaro Viebrantz
 
Desenvolvimento web com (cms) Drupal
Desenvolvimento web com (cms) DrupalDesenvolvimento web com (cms) Drupal
Desenvolvimento web com (cms) DrupalEmerson Barros
 
Tudo que você precisa saber sobre as principais alterações no Drupal 8
Tudo que você precisa saber sobre as principais alterações no Drupal 8 Tudo que você precisa saber sobre as principais alterações no Drupal 8
Tudo que você precisa saber sobre as principais alterações no Drupal 8 Acquia
 
Comandos gerais do PHP
Comandos gerais do PHPComandos gerais do PHP
Comandos gerais do PHPPaulo Dayvson
 

Similar to Slide Aula - Curso CakePHP (20)

Cake PHP
Cake PHPCake PHP
Cake PHP
 
Python mudando o modo de desenvolver para a internet
Python mudando o modo de desenvolver para a internetPython mudando o modo de desenvolver para a internet
Python mudando o modo de desenvolver para a internet
 
Python mudando o modo de desenvolver para a web - Marcos Daniel Petry
Python mudando o modo de desenvolver para a web  - Marcos Daniel PetryPython mudando o modo de desenvolver para a web  - Marcos Daniel Petry
Python mudando o modo de desenvolver para a web - Marcos Daniel Petry
 
Cakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHPCakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHP
 
Carreira de Desenvolvimento
Carreira de DesenvolvimentoCarreira de Desenvolvimento
Carreira de Desenvolvimento
 
PHP Turbinado com CodeIgniter - Conisli 2011
PHP Turbinado com CodeIgniter - Conisli 2011PHP Turbinado com CodeIgniter - Conisli 2011
PHP Turbinado com CodeIgniter - Conisli 2011
 
Palestra
PalestraPalestra
Palestra
 
Curso HTML 5 - Aula Inicial
Curso HTML 5 - Aula InicialCurso HTML 5 - Aula Inicial
Curso HTML 5 - Aula Inicial
 
Zend Framework Estrutura e TDD
Zend Framework Estrutura e TDDZend Framework Estrutura e TDD
Zend Framework Estrutura e TDD
 
Web Tools Pt Br
Web Tools Pt BrWeb Tools Pt Br
Web Tools Pt Br
 
Curso PHP UNIFACS 2014.1 – Frameworks
Curso PHP UNIFACS 2014.1 – FrameworksCurso PHP UNIFACS 2014.1 – Frameworks
Curso PHP UNIFACS 2014.1 – Frameworks
 
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e ZendAnálise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
 
Ruby on Rails: um estudo de viabilidade em ambientes empresariais
Ruby on Rails: um estudo de viabilidade em ambientes empresariaisRuby on Rails: um estudo de viabilidade em ambientes empresariais
Ruby on Rails: um estudo de viabilidade em ambientes empresariais
 
Slides .pptx.pdf
Slides .pptx.pdfSlides .pptx.pdf
Slides .pptx.pdf
 
Tema 1 | Introdução a PHP
Tema 1 | Introdução a PHPTema 1 | Introdução a PHP
Tema 1 | Introdução a PHP
 
Construindo aplicações Cloud Native em Go
Construindo aplicações Cloud Native em GoConstruindo aplicações Cloud Native em Go
Construindo aplicações Cloud Native em Go
 
Desenvolvimento web com (cms) Drupal
Desenvolvimento web com (cms) DrupalDesenvolvimento web com (cms) Drupal
Desenvolvimento web com (cms) Drupal
 
A Linguagem Php
A Linguagem PhpA Linguagem Php
A Linguagem Php
 
Tudo que você precisa saber sobre as principais alterações no Drupal 8
Tudo que você precisa saber sobre as principais alterações no Drupal 8 Tudo que você precisa saber sobre as principais alterações no Drupal 8
Tudo que você precisa saber sobre as principais alterações no Drupal 8
 
Comandos gerais do PHP
Comandos gerais do PHPComandos gerais do PHP
Comandos gerais do PHP
 

More from Rangel Javier

Banco de Dados - MySQL Basico
Banco de Dados - MySQL BasicoBanco de Dados - MySQL Basico
Banco de Dados - MySQL BasicoRangel Javier
 
PyroCMS - Conhecendo o CMS - Sistema Gerenciador de Conteúdo
PyroCMS - Conhecendo o CMS - Sistema Gerenciador de ConteúdoPyroCMS - Conhecendo o CMS - Sistema Gerenciador de Conteúdo
PyroCMS - Conhecendo o CMS - Sistema Gerenciador de ConteúdoRangel Javier
 
Banco de Dados - Introdução - Projeto de Banco de Dados - DER
Banco de Dados - Introdução - Projeto de Banco de Dados - DERBanco de Dados - Introdução - Projeto de Banco de Dados - DER
Banco de Dados - Introdução - Projeto de Banco de Dados - DERRangel Javier
 
Tecnologias Web - Tabelas
Tecnologias Web - TabelasTecnologias Web - Tabelas
Tecnologias Web - TabelasRangel Javier
 
Tecnologias Web com foco na criação de Landing Pages
Tecnologias Web com foco na criação de Landing PagesTecnologias Web com foco na criação de Landing Pages
Tecnologias Web com foco na criação de Landing PagesRangel Javier
 
Banco de Dados - Part01
Banco de Dados - Part01Banco de Dados - Part01
Banco de Dados - Part01Rangel Javier
 
Apresentação jasmine
Apresentação jasmineApresentação jasmine
Apresentação jasmineRangel Javier
 
Apresentação formação web - up marketing digital - módulo ii - 2º fds
Apresentação   formação web - up marketing digital - módulo ii - 2º fdsApresentação   formação web - up marketing digital - módulo ii - 2º fds
Apresentação formação web - up marketing digital - módulo ii - 2º fdsRangel Javier
 
Apresentação formação web - up marketing digital - módulo ii
Apresentação   formação web - up marketing digital - módulo iiApresentação   formação web - up marketing digital - módulo ii
Apresentação formação web - up marketing digital - módulo iiRangel Javier
 

More from Rangel Javier (9)

Banco de Dados - MySQL Basico
Banco de Dados - MySQL BasicoBanco de Dados - MySQL Basico
Banco de Dados - MySQL Basico
 
PyroCMS - Conhecendo o CMS - Sistema Gerenciador de Conteúdo
PyroCMS - Conhecendo o CMS - Sistema Gerenciador de ConteúdoPyroCMS - Conhecendo o CMS - Sistema Gerenciador de Conteúdo
PyroCMS - Conhecendo o CMS - Sistema Gerenciador de Conteúdo
 
Banco de Dados - Introdução - Projeto de Banco de Dados - DER
Banco de Dados - Introdução - Projeto de Banco de Dados - DERBanco de Dados - Introdução - Projeto de Banco de Dados - DER
Banco de Dados - Introdução - Projeto de Banco de Dados - DER
 
Tecnologias Web - Tabelas
Tecnologias Web - TabelasTecnologias Web - Tabelas
Tecnologias Web - Tabelas
 
Tecnologias Web com foco na criação de Landing Pages
Tecnologias Web com foco na criação de Landing PagesTecnologias Web com foco na criação de Landing Pages
Tecnologias Web com foco na criação de Landing Pages
 
Banco de Dados - Part01
Banco de Dados - Part01Banco de Dados - Part01
Banco de Dados - Part01
 
Apresentação jasmine
Apresentação jasmineApresentação jasmine
Apresentação jasmine
 
Apresentação formação web - up marketing digital - módulo ii - 2º fds
Apresentação   formação web - up marketing digital - módulo ii - 2º fdsApresentação   formação web - up marketing digital - módulo ii - 2º fds
Apresentação formação web - up marketing digital - módulo ii - 2º fds
 
Apresentação formação web - up marketing digital - módulo ii
Apresentação   formação web - up marketing digital - módulo iiApresentação   formação web - up marketing digital - módulo ii
Apresentação formação web - up marketing digital - módulo ii
 

Slide Aula - Curso CakePHP

  • 1. CakePHP Tão fácil quanto fazer um bolo!
  • 2. Roteiro • Conceitos • Framework • MVC • CakePHP
  • 3. Quem sou eu... • Rangel Xavier – 25 anos • Sistemas de Informação • Aluno do Mestrado em Eng. de Software • Design & Desenvolvedor • J!platform/CSS/HTML • PHP
  • 4. O que é? • O CakePHP é um framework para desenvolvimento de aplicações e websites, de forma que os programadores/desenvolvedores possam trabalhar simples.
  • 5. O que é? • Qualquer programador, seja de qualquer nível, pode sim, aprender o cakePHP tranquilamente, pois, além de uma vasta documentação, o framework é muito bem organizado. Tudo isso totalmente gratuito.
  • 6. História • Michal Tatarynowicz • Ano 2005 • Quando Ruby on Rails começou a ganhar popularidade entre os desenvolvedores. • Versão 2.x
  • 7. Motivos para utilizar • Ativo e com comunidade amigável; • Licença flexível; • Compatibilidade com PHP 4 e PHP 5; • Integrando funcionalidade CRUD (Create, Read, Update and Delete, ou Criar, Ler, Atualizar e Excluir) para interagir com o banco de dados; • Aplicações scaffolding; • Geração de código; • Arquitetura MVC (Model, View, Controller, ou Modelo, Visões, Controlador); • Requisições ao expedidor com clareza, URLs personalizáveis e rotas;
  • 8. Motivos para utilizar • Validações internas; • Templates rápidos e flexíveis (Sintaxe PHP e com ajudantes); • Ajudantes para usar AJAX, JavaScript, HTML, formulários e outros nas visões; • Componentes de E-mail, Cookie, Segurança, Sessões, Manipulação de Requisições e outros; • Flexibilidade com cache; • Internacionalização; • Funciona em qualquer subdiretório do seu website, com poucas configurações no Apache
  • 9. O que é aprender? • Orientação Objeto • PHP OO • HTML e CSS • JS • Convenções e particularidades do cakephp
  • 11. Objetos e Classes • Objetos reais possuem duas características. Estado e Comportamento. Por exemplo, um cachorro tem nome, raça, idade, tamanho e etc, e existem também comportamentos, como abanar o rabo, latir e “acasalam nas pernas alheias”.
  • 12. Objetos e Classes • Exemplo mais simples: • No objeto lâmpada: – Estado: Acesa e Apagada – Comportamento: Ser acesa e ser apagada; • Então, tudo pode ser um objeto. Concordam? • A partir de agora, ESTADO = ATRIBUTO e COMPORTAMENTO = MÉTODOS/FUNÇÕES
  • 13. Objetos e Classes • Classes são a base ou template para criação do nosso objeto. Ela define nossos atributos e nossos métodos utilizados. • Vamos criar nossa primeira classe.
  • 14. Objetos e Classes • Classe – Primeiro passo é criarmos nosso arquivo animal.class.php. – Iremos criar a Class Animal, com atributos espécie, raça, nome, cor; – Iremos também criar o nosso compartamento, ops! nosso método falar; 5 min
  • 15. Objetos e Classes • Objeto – Agora criaremos o objeto baseado na nossa classe animal. – Crie um objeto $animal e inicialize (chamemos a partir de agora de instanciar). – Palavra chave: new 5 min
  • 16. Objetos e Classes • Voltar para Classe – Criar nosso método falar(); – Adicionaremos um novo atributo chamado som, e iremos chama-lo dentro de nosso método; – Vamos fazer juntos!
  • 17. Herança • O processo de “ramificar” uma classe, chama-se Herança. • Como assim tio? • Tenho uma classe Cachaça, com atributos, $teor_alcoolico, $ml e $idade, podemos criar uma classe chamada Uisque, a qual, irá herdar todas as características da classe pai. • Vamos exemplificar 
  • 18. Esquenta! • Criar uma Classe Pessoa, com atributos, nome, altura, peso, ano de nascimento; • Criar os métodos – calcularIdade(); – calcularIMC(); – IMC = Massa / Altura²
  • 20. PHP do “tempo do ronca” • Falta de Padrões; • Programação Orientada a Gambiarra, tornando o programador “doidim”; • Qualquer um desenvolvia; • Linguagem para pequenos projetos; • Script Kiddies, sobrinhos e “amigos que mexem com informática”
  • 21. PHP evolução • OO verdadeiro; • Padrões em projetos; • Inúmeros projetos criados, documentados: FRAMEWORKS!
  • 22. O que são? • É uma coleção de códigos-fonte, classes, funções, técnicas e metodologias que facilitam o desenvolvimento de novos softwares
  • 23. O que são comum entre eles? • Ao olharmos atentamente para os principais frameworks de desenvolvimento para PHP, podemos observar que algumas tecnologias e técnicas são comuns à maioria deles.
  • 24. Design Patterns • Padrões de Projetos, são formas já testadas e documentadas de se resolver certo tipo de problemas.
  • 25. Modelo, Controle e Visão • O padrão MVC é a separação de lógica e apresentação, sendo que isso favorece o trabalho em equipe. • Dessa forma, qualquer mudança, por exemplo, na apresentação, teria pouco ou nenhum impacto nas demais camadas da aplicação.
  • 26. Active Record • Facilita a manipulação de dados contidos em uma base de dados por aplicações desenvolvidas com o paradigma orientadas a objetos. • Desta forma, não é necessário que o desenvolvedor conheça uma linguagem de manipulação de dados como SQL, além de manter toda a aplicação desenvolvida no paradigma orientado a objetos.
  • 27. AJAX • Existem diversas bibliotecas para se utilizar as funcionalidades do AJAX em suas aplicações facilmente. Entre elas, pode-se citar o Dojo e o Prototype. Alguns frameworks utilizam estas bibliotecas para facilitar o desenvolvimento de aplicações. O CakePHP e o Symfony, são principais neste quesito.
  • 28. Internacionalização • É o processo de permitir que seja facilmente modificada o idioma da interface e de mensagens da aplicação. • Para facilitar o desenvolvimento deste tipo de aplicações, é necessário que o framework utilizado possua suporte a essa característica. • A partir do CakePHP 2.x, essa funcionalidade foi implementada.
  • 29. Zend Framework Particularidades
  • 30. Caracteristicas • Surgiu em 2005; • Versão atual: 2.0.2 (21 de setembro de 2012); • Zend Technologies, empresa mantenedora do PHP;
  • 31. +e- • Segurança; • Certificação; • Vários componentes prontos; • Muitas configurações; (-) • Arquivo bootstrap manual; (-) • Curva de aprendizagem alta; (-) • ORM #fail; (-) • http://framework.zend.com/
  • 33. Caracteristicas • Surgiu em 2006; • 2.1.1 (20 de junho de 2012); • Rasmus Lerdorf, aprovou!
  • 34. +e- • Pequeno e Leve; • Sem tantas configurações; • Framework mais utilizado; • 2º lugar no Ranking de Frameworks PHP (Europa); • Documentação boa; • ORM #fail; (Data Mapper) • E muito muito muito mais 
  • 36. Caracteristicas • Surgiu em 2011; • 3.2.7; • Rasmus Lerdorf, aprovou!
  • 37. +e- • Limpo e Leve; • Baseado em “Routes”; • ORM o/; • Documentação; (-) • Material em Português; (-) • www.laravel.com
  • 39. Estrutura de Pastas cakephp/ /app/ /lib/ /plugins/ /vendors/
  • 40. Diretório “pai” /app/ /config – arquivos de configuração. Ex.: DB, Email /console – onde fica o bake (feito tudo pelo terminal) /controller – onde fica nossos controladores /lib – bibliotecas de terceiros /locale – pasta para colocar arquivos de idioma /model – onde fica nosso models /plugins – local de nossos plugins /test – para colocar nossos testes unitários. /tmp – os arquivos temporarios/cache/logs. /vendor – scritps, classes, componentes de terceiros. /view – arquivos da view /webroot – arquivos de estilo, javascripts e afins.
  • 41. Outros conceitos • Helpers: “Ajudantes”, ele auxiliam a criação de algo dentro da aplicação. Ex.: Formulário, Gerenciamento de Cache, HTML entre outros; • Cada controller o qual é necessário utilização de algum helper, pode ser informado por meio de uma array $helpers. Veja a sintaxe:
  • 42. Helpers class MeuController extends AppController { public $helpers = array(‘form’, ‘html’); }
  • 43. Helpers Padrões • CacheHelper • FormHelper • HtmlHelper • JsHelper • NumberHelper (Número e formatos de moedas) • Paginator • RSS • SessionHelper • TextHelper (Formação de textos “inteligentes”); • TimeHelper (Formatação de data e hora)
  • 44. Scaffolding • É uma técnica que permite ao desenvolvedor definir e criar uma aplicação básica que possa inserir, selecionar, atualizar e excluir objetos, inserindo apenas o atributo/objeto $scaffold em seu controller.
  • 45. Sintaxe Scaffolding <?php class MeuController extends AppController { public $scaffold; }
  • 46. Componentes • Componentes (components) são pacotes com funções que são usadas para serem utilizada entre os controllers. • Se você está querendo copiar e colar coisas entre seus controllers, talvez seja uma boa ideia considerar a possibilidade de empacotar estas funcionalidades em componentes.
  • 47. Componentes Padrões O CakePHP também já vem com uma quantidade fantástica de componentes incluídos, que você pode usar para lhe ajudar com: • Segurança • Sessões • Lista de Controle de Acesso (do inglês ACL, Access control lists) • Emails • Cookies • Autenticação • Tratamento de Requisições
  • 48. Requisições (URLs) http://localhost/controller/function/param entro Exemplo real: http://localhost/usuarios/deletar/2/
  • 49. Teste
  • 50. Verdadeiro ou Falso • O Helpers auxiliam o desenvolvedor na criação de Sessões e manipulação no BD; • Os componentes são conjunto de códigos que são utilizados várias vezes entre os Controllers; • O diretório principal do CakePHP é o lib; • O scaffolding faz uma simulação automática de minha aplicação;
  • 51. Verdadeiro ou Falso • O Helpers auxiliam o desenvolvedor na criação de Sessões e manipulação no BD; • Os componentes são conjunto de códigos que são utilizados várias vezes entre os Controllers; • O diretório principal do CakePHP é o lib; • O scaffolding faz uma simulação automática de minha aplicação;
  • 52. Camada “C” Controller
  • 53. Controllers • Os controllers fornecem uma série de métodos que são chamados de ações. Ações são métodos em um controller que manipulam requisições. Por padrão, todos os métodos públicos em um controller são ações e acessíveis por urls.
  • 54. Controllers • A classe AppController é a mãe de todos os outros controllers da sua aplicação. O próprio AppController é estendida da classe Controller que faz parte da biblioteca do CakePHP. • Todos seus controllers devem ser estendida desta.
  • 57. Controllers • Atributos: $name O atributo deve ser definido com o nome do controller. Normalmente é apenas a forma plural do nome do model principal que o controller usa. Esta propriedade não é requerida mas salva o CakePHP de ter que flexionar o nome do model para chegar no valor correto.
  • 58. Controllers $this->set Enviar atributo para view; Sintaxe $this->set(‘atributo’, ‘conteúdo do atributo’);
  • 59. Controllers save(“dados_a_serem_salvos_no_db”) Salva dados no banco; Sintaxe $this->MyModel->save($this->data);
  • 60. Controllers delete(“dados_a_serem_deletados_no_db”) Deleta dados do banco; Sintaxe $this->MyModel->delete($id);
  • 61. Controllers redirect() Controle de Fluxo e redirecionamento de páginas; Sintaxe $this->redirect(array(‘controller’ => ‘usuario’))
  • 62. Camada “V” Views
  • 63. Views • A camada responsável pela visualização da interface. Aqui ficará nosso HTML e o mínimo de PHP possível. • 90% HTML e 10% PHP;
  • 64. Views • Para cada controller, é necessário criar um diretório com o seu nome do e dentro dela os arquivos com os nomes de cada ação. • Certinho?
  • 65. Views - Exemplo • Existe um Controller chamado Alunos, e neste controller existe uma ação inserirnota() e calcularmedia(); • Irei criar uma pasta dentro de /Views/ com o nome do Controller, Alunos, e dentro dessa pasta, cada ação do Controller, ganhará um arquivo específico com a extensão .ctp; • Ficando desta maneira
  • 66. Views
  • 67. Camada “M” Models
  • 68. Models • Os models (modelos) formam o coração de sua aplicação. Tratam das validações, armazenamento e recuperação dos seus dados
  • 69. Models • Nossa Model deve ser no singular herdando de AppModel. Se nosso Controller chama Alunos, nossa model irá se chamar Aluno.
  • 70. CVM ops! MVC • Controller camada de Negócios; • View camada de Visualização; • Model camada de Persistência; • Dramatização!
  • 71. Baixando o CakePHP • Acessar o site oficial do http://cakephp.org/ • Pelo GitHub https://github.com/cakephp/cakephp/zi pball/2.2.3
  • 72. Descompactar • Descompacte o arquivo dentro do servidor local. • Renomear a pasta para /projetocake 10 min
  • 73. Configuração • Gerar outro novo código de segurança, nosso atributo security.salt no arquivo config/core.php • Para simular um projeto real, iremos gerar uma chave segura. • http://www.md5encrypter.com/ • Gerar outro código para o security. cipherSeed.
  • 74. Configuração BD • Próximo passo é configurar o banco de dados. No nosso arquivo database.php.default • Precisamos criar nosso banco de dados e nossa tabela. • Veja:
  • 75. Banco de Dados • Padrão das tabelas, sempre no PLURAL. • Nome do Banco: projetocake • Nome da Tabela: Noticias • Campos: id, titulo, conteudo, autor, created e modified
  • 76. Revisão • Tabelas do Banco: Plural • Model: Singular • Controller: Plural seguido o nome Controller;
  • 77. Teste
  • 78. Pergunta 01 • Quem é o responsável pela comunicação dos dados com o Banco? a) View b) Database c) Model d) DataMapper
  • 79. Verdadeiro ou Falso • Para cada método do meu Controller, é necessário criar um arquivo .ctp dentro da pasta com o nome de meu Controller; • Models são no singular e as tabelas no banco de dados; • As validações são feita no Controller • As views é a parte da aplicação onde fica mais código PHP.
  • 80. Verdadeiro ou Falso • Para cada método do meu Controller, é necessário criar um arquivo .ctp dentro da pasta com o nome de meu Controller; • Models são no singular e as tabelas no banco de dados; • As validações são feita no Controller; • As views é a parte da aplicação onde fica mais código PHP;
  • 82. Meu 1º Controller • Criar um arquivo NoticiasController.php • Criar Class com o mesmo nome do arquivo; • Fazer a herança; • Inicializar o atributo $name; Tempo: 15 min
  • 83. Meu 1º Controller • Vamos utilizar na prática agora no Scaffolding; • Para isto basta inicializar nosso atributo public $scaffold; • Vamos olhar a mágica!
  • 84. Meu 1º Controller • Por padrão, o cakePHP busca o método index(); • Então criaremos o método index(); • Outro erro? Por que? • Criamos o nosso arquivo index.ctp em nossa view.
  • 85. Meu 1º Controller • Enviar um atributo conteúdo um valor, por exemplo, “Todos as noticias”. • Para isso, basta utilizar a função set(), visto anteriormente; $this->set(‘atributo’, ‘valor’); Tempo: 15 min
  • 86. Minha 1ª view • Vamos colocar apenas um titulo em html e “echoar” o nome de nossa variável, que enviamos para nossa view. Funcionou? o/o/o/o/o/o/o/o/o/o/o/o/o/
  • 87. Minha 1ª Model • Essa é com vocês! • Como cria uma model? • Singular ou Plural? • Herda de quem? Tempo: 15 min
  • 88. Inserir dados Inserir dados direto no banco, para testarmos nossa capturar de dados; Entre no seu SGBD e coloquem textos fictícios em nossos campos; Tempo: 10 min
  • 89. Capturar dados • Para capturar os dados do banco utilizando find(); $this->Model->find(‘all’);
  • 90. Find() • O método find() captura os dados da base; • Os parâmetros possíveis para esse método são: 'all', 'first','count', 'list', 'neighbors' or 'thr eaded'
  • 91. Find(‘all’) • Esse método retorna para nossa view os dados do banco em forma de array.
  • 92. Editar a view var_dump($array); Essa função exibe a estrutura/conteudo de um array. Vamos utilizar essa função em nossa view.
  • 93. Editar a view <table> <tr> <td>ID</td> <td>Titulo</td> <td>Data</td> <td>Ações</td> </tr> <?php foreach ($noticias as $noticia) { ?> <tr> <td><?php echo $noticia[‘Noticia']['id'];?></td> <td><?php echo $noticia[‘Noticia'][‘titulo'];?></td> <td><?php echo $noticia[‘Noticia'][‘data'];?></td> <td></td> </tr> <?php }?> </table>
  • 94. Index Finalizado • Com isso finalizamos nosso primeiro método! • Criamos o método index(); • Criamos o arquivo index.ctp; • Enviamos para a view todos os dados do banco; • Editamos o layout da View;
  • 95. Método delete() • O que vamos utilizar? – Passar por parâmetro da função o id ao qual quer deletar. Se existir, utilize o método $this->Model->delete($id); – Nada na view; Tempo: 20 min
  • 96. Método adicionar() • Missão agora é criar nosso método adicionar().
  • 97. Método adicionar() • O que vamos utilizar? – $this->Model->save($this->data); – $this->data; • É um array contendo os dados enviado da view, via POST ou GET. – Vamos utilizar nosso primeiro Helper, para criar nosso Formulário na camada View, no arquivo adicionar.ctp;
  • 98. FormHelper FormHelper::create(string $model = null, array $options = array()); É o método para iniciar a criação do nosso formulário. Ele que criará o cabeçalho de nosso formulário. Podemos definir o method, action e name do formulário. Por padrão o method é POST;
  • 99. FormHelper <?php echo $this->Form->create('User', array('action' => 'login')); ?> Saida: <form id="UserLoginForm" method="post" action="/users/login">
  • 100. FormHelper • Para cada campo do nosso formulários, os “inputs” é o FormHelper oferece um método simples para isso. echo $this->Form->input(‘campo', array('label' => ‘Minha Label'));
  • 101. FormHelper <?php echo $this->Form->end('Finish'); ?> Saída: <div class="submit"> <input type="submit" value="Finish" /> </div> </form>
  • 102. Criar view adicionar Vocês vão criar todos os campos que desejamos no Formulário de Adicionar, utilizando o FormHelper e em seguida iremos testar nossa aplicação. Tempo: 30 min
  • 103. SetFlash Para uma mensagem de alerta nos controllers, o Componente Session nos da um método para isto. O método SetFlash. $this->Session->SetFlash(‘Mensagem’);
  • 104. Redirect Para redirecionarmos de um controller para outro, o CakePHP nos disponibiliza um método para isto. $this->redirect(array(‘action’=>’pra onde vai’))
  • 105. HtmlHelper O CakePHP também disponibiliza um Helper para o HTML dentro de nossas views, veremos agora alguns métodos utilizado.
  • 106. HtmlHelper HtmlHelper::image(string $path, array $options = array()) Parameters: $path (string) – Path to the image. $options (array) – An array of html attributes. Exemplo: echo $this->Html->image('cake_logo.png', array('alt' => 'CakePHP')); Saida: <img src="/img/cake_logo.png" alt="CakePHP" /> O caminho padrão das imagens é o: /app/webroot/img/.:
  • 107. HtmlHelper HtmlHelper::link(string $title, mixed $url = null, array $options = array(), string $confirmMessage = false) Parameters: $title (string) – O texto a ser exibido; $url (mixed) – Para onde será enviado; $options (array) – An array of html attributes. Exemplo: echo $this->Html->link('Enter', '/pages/home', array('class' => 'button', 'target' => '_blank')); Saida: <a href="/pages/home" class="button" target="_blank">Enter</a>
  • 108. Método view() public function view($id = null) { $this->Model->id = $id; $this->set(‘atributo', $this->Model->read()); }
  • 109. View.ctp <h1><?php echo $atributo['Model']['titulo']?></h1> <p><small>Created: <?php echo $atributo['Model']['created']?></small></p> <p><?php echo $atributo['Model']['conteudo']?></p>
  • 110. Exercício Método Listar, para exibir o conteúdo. $titulo Feito por: $autor $conteudo $data <tr> http://localhost/noticias/listarNoticias Titulo deve apostar para o método View Tempo: 40 min
  • 111. Exercício Criar uma calculadora, com métodos somar, subtrair, dividir e multiplicar, passando os valores apenas pela URL.
  • 112. Exercício Criar uma calculadora, com métodos somar, subtrair, dividir e multiplicar, passando os valores apenas pela URL, utilizando o FormHelper