Archive for maio, 2009

No CakePHP 1.2, ficou mais fácil retornarmos do nossos modelos apenas aquilo o que realmente esperamos, no core do CakePHP 1.2, foi adicionado o behavior Containable, o qual se propõem, a filtrar o relacionamentos entre os modelos no CakePHP.

Com este, conseguimos quando fazemos retrive em algum modelo, fazer com que ele traga justamente aquilo que achamos pertinente, ou seja, apenas o resultado desejado, com isso poupando dados redundantes, assim como melhorando a performance por o modelo deixar, de trazer relacionamentos que não são necessários.

O uso do mesmo no CakePHP, é muito simples, basta chamar ele no modelo, que julga pertinente, ou adicionar no AppModel para que todos os modelos herdem esse behavior, Countaible.

1
2
3
class AppModel extends Model {
    public $actsAs = array('Containable');
}

ou on the fly:

1
$this->Modelo->Behaviors->attach('Containable');

Após a importação seu uso é simples, imaginamos um ambiente onde temos os seguintes modelos:

Post, User, Comment, Tag, onde:

1
2
3
Post belongsTo User
Post hasMany Comment
Post hasAndBelongsToMany Tag

Agora supúnhamos que desejamos fazer uma listagem dos últimos posts, logo só precisamos exibir os dados, do Post, o User que escreveu esse Post e as Tags desse post.

1
2
$this->Post->contain('User','Tag');
debug($this->Post->find('all', array('limit' => 10)));

outro exemplo:

1
     $this->Post->contain('Comment.author = "Gabriela"');

Com isso filtramos os resultados que o find do Post deve trazer, isso pode ser feito com diversos relacionamentos:

1
2
$this->User->contain('Profile', 'Scrap', 'Scrap.User', 'Album.Photo');
$this->User->find('all');

Conseguimos definir os relacionamentos entre os modelos que desejamos trazer, é uma boa alternativa para o:

1
$this->Modelo->recursive

Resumindo o Containable é sempre uma grande opção, na ora de usar o find, pois com eles conseguimos definir exatamente o que desejamos que o find traga para nós.

Matt Curry  publicou em seu blog, um lançamento de um livro de CakePHP, que não fala só o básico do CakePHP, como vemos na maioria das vezes, é um livro com uma abordagem mais direta para quem realmente já trabalho com o CakePHP.

Então você agora pode ter um livro free (totalmente grátis), que satisfaça algumas de suas dúvidas mais avançadas em CakePHP, eu fiz o download do livro hoje mesmo, e já comecei a dar uma lida, quem está apto com inglês pode fazer uma fácil leitura do mesmo, para aqueles que não estão, proponho aqui para comunidade, se juntarmos para fazer uma tradução desse livro.

O download do livro de CakePHP, pode ser feito aqui, e o post da publicação de Matt Curry você pode conferir aqui.

Jquery plugin mouse gestures

| maio 12th, 2009

Muito legal o plugin de movimentos de mouse com Jquery, abre possibilidade de gerar grandes resultados com o mesmo você pode conferir um demo aqui.

E conhecer mais sobre ele aqui.

Estou procurando dar uma melhorada no meu apartamento, é um apartamento muito pequeno, a sala transformei de um mini escritório, todavia não sobrou muito espaço para receber pessoas.

Procurando algumas dicas na internet do que posso fazer para melhorar o apartamento, assim como dar uma decorada no apartamento, encontrei um simulador online de ambientes, para aqueles que como eu não sabe usar ferramentas gráficas tais como Autocad, com ele é bem simples de modelar em 2d e 3d, seu apartamento.

O Florplanner oferece de graça um serviço para você criar seu projeto pessoal, ou pode assinar planos para aqueles que querem usar profissionalmente.

Gostei bastante dele agora tenho uma versão 3d do meu apartamento, todavia falata decorar e dar uma arrumada nele para deixar o mesmo mais prático e aconchegante.

PHP Dicas Rápidas: break

| maio 3rd, 2009

Em muitos laços no PHP, precisamos dar uma parar o laço quando uma determinada ação ocorre.

Isso é muito usado em diversas linguagens, assim como no PHP.

1
2
3
4
5
6
7
$i = 0;
while (true) {
  if ($i == 3) {
    break;
  }
  echo $i;
}

Algo legal, que temos no PHP é determinar quantos laços devemos parar se determinada ação deve ocorrer:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<h2>Exemplo 1:</h2>
< ?php
for ($i = 0; $i < 10; $i++) {
    for ($j = 0; $j < 3; $j++) {
        echo 'for 2: ', $j, "<br />";
    }
    echo 'for 1: ', $i, "<br />";
}
?>
<h2>Exemplo 2:</h2>
< ?php
for ($i = 0; $i < 10; $i++) {
    for ($j = 0; $j < 3; $j++) {
        echo 'for 2: ', $j, "<br />";
	if ($j == 2) {
            break 2; //Para os 2 laços
        }
    }
    echo 'for 1: ', $i, "<br />";
}
?>

Algo simples porém pode ajudar bastante quando trabalhamos com laços, fica a dica.

BuscaPé, líder em comparação de preços na América Latina