4. Apresentação
A 2km é uma empresa mineira especializada no
desenvolvimento ágil de soluções para web utilizando
software livre.
+20 projetos utilizando o CakePHP nos últimos 12
meses.
Desenvolveu projetos para empresas e organizações como
Record Minas, PMDB-MG, Orca veículos entre outras.
5. Apresentação
Carlos Pires (Cadu) é bacharel em ciência da computação.
Desenvolve e é apaixonado pela web e por software livre desde 1999.
Trabalhou com Java(JEE) por mais de 6 anos em diversas empresas da
capital mineira. Ultimamente tem se dedicado ao CakePHP e à jQuery.
Quando não está andando de bike, está estudando línguas (inglês e
espanhol), curtindo um samba de raíz ou tomando uma cervejinha com
os amigos.
Daniel Golgher é tecnólogo em Processamento de Dados, Bacharel em
Sistema de Informação e Especialista em Engenharia de Software.
Desenvolve em PHP desde 2001. Gosta de software livre, especialmente
dos projetos: CakePHP, FreeBSD, MySQL, Apache, PHP, Python dentre
outros.
Nas horas vagas vai ao cinema com a namorada e passeia com o Baco
(São Bernardo).
7. Motivação
Divulgar o framework CakePHP
Divulgar os novos cursos da 2km
Retribuir à comunidade de software livre
Combater o código 'espaguete'
Mostrar que programar pode ser divertido!
9. Desenvolvimento ágil
Estórias de usuário
Programação em Pares
Programação orientada ao teste (TDD)
Refatoração (Refactoring)
Reunião em pé (Stand up meeting)
Sprints
11. Princípios do desenvolvimento ágil
COC – Convention Over Con guration
DRY - Don't Repeat Yourself
KISS - Keep It Short and Simple or Keep It Simple Stupid
SoC - Separation of Concerns
YAGNI - You Ain't Gonna Need It
15. Código espaguete?
<div style='display:<?=$valor?$tipo1:$tipo2; ?>'>
<? if($flag == 0){ ?>
<script>
var a = [<?=implode(',',$lista)?>];
<? $SQL = quot;SELECT * FROM clientes WHERE 1 ORDER BY data ASC LIMIT 1 OFFSET 1 quot; ?>
<? }else{ ?>
<b> entroh aqui flag= <?=$flag //debugue ?> </b>
<? $SQL = quot;SELECT * FROM clientes WHERE quot;.$cond.quot; ORDER BY data ASC LIMIT 1 OFFSET quot;.
$flag ?>
<script>
//
var a= [<?=implode(',',$lista_)?>];
<? } ?>
// debugue
alert(a);
<<?php echo '/'.quot;scriptquot;; // kuIDaDeNHo c/AxXx bAhRRaxXXxx ?>>
</div>
Fonte: http://desciclo.pedia.ws/wiki/PHP
16. Código MVC
<?php
//Arquivo da Classe de Modelo
class Usuario extends AppModel {
var $name = 'Usuario';
var $displayField = 'nome';
}
?>
models/usuario.php
<?php
//Arquivo da Classe de Controle
class UsuariosController extends AppController {
function teste($grupo_id=null){
$usuarios=$this->Usuario->find('list',array('conditions'=>array('grupo_id'=>$grupo_id)));
$this->set(compact('usuarios'));
}
}
?>
controllers/usuarios_controller.php
<?php
//Arquivo da Classe de Visão
$form->create('Usuario',array('action'=>'teste'));
$form->input('usuario');
$form->end('Enviar');
?>
views/usuarios/teste.ctp
17. Código em uma camada?
<?php
$conn = mysql_connect('localhost','root','senha');
mysql_select_db('meu_banco',$conn);
$query = 'SELECT id,nome FROM usuarios WHERE grupo=quot;'.$_POST['grupo_id'].'quot;';
$result = mysql_query($query);
?>
<html>
<head>...</head>
<body>
<form action=quot;teste.phpquot;>
Selecione o usuário:
<select name='usuario'>
<?php
while($row = mysql_fetch_row($result)){
echoquot;<option id=quot;.$row[0].quot;>quot;.$row[1].quot;</option>quot;;
}
?>
</select>
<input type='submit'>
</form>
</body>
</html>
Exemplo de código em uma camada
22. Validações
var $validate = array(
'login' => array('isUnique' => array(
'rule'=>'isUnique',
'message'=>'Este e-mail já existe na base de dados.'),
'email' => array(
'rule' => 'email',
'message' => 'O campo E-mail deve ser um email válido')
),
'senha' => array(
'rule' => array(
'confirmaSenha', 'senha'),
'message' => 'O campo senha e a confirmação da senha não conferem'
),
'confirma_senha' => array(
'rule' => 'alphanumeric',
'required' => true,
'message'=>'O campo confirmação da senha é obrigatório',
'on'=>'create'
),
'nome' => array(
'rule' => array('between', 2, 64),
'message' => 'O campo nome deve possuir de 2 a 64 caracteres')
);
function confirmaSenha($data) {
return $data ['senha'] == $this->data ['Usuario'] ['confirma_senha'];
}
models/usuario.php
32. Como aproveitar melhor tudo isso?
Fazendo os cursos de desenvolvimento web que a
2km interativa! está lançando:
Curso de CakePHP (Curso mais completo do
CakePHP no Brasil - 60 horas)
Curso de jQuery (Abordando as novidades da versão
1.3. Em breve)
Curso de Padrões Web (em breve)
34. Agradecimentos
Agradecemos a presença de todos neste sábado e
esperamos vê-los nos próximos workshops!
Dúvidas, críticas, sugestões e doações para:
Carlos Pires (e-mail: carlos.pires@2km.com.br / Twitter: @cadu)
Daniel Golgher (e-mail: daniel@2km.com.br / Twitter: @golgher)
http://www.2km.com.br