Newton Wagner

se desenvolvendo na web

Archive for the ‘desenvolvimento’ Category

Estendendo o Core do Code Igniter

with 7 comments

Uma das razões que nos faz utilizar uma framework é poupar tempo. Porém, as vezes é preciso fazer algumas adaptações para melhorarmos ainda mais a eficiência no desenvolvimento da aplicação. É aí que a framework precisa oferecer flexibilidade.

Como já disse anteriormente, estou utilizando o Code Igniter para desenvolver um projeto pessoal, e vou mostrar o princípio de uma pequena adaptação que vai me poupar muito tempo e várias linhas de código.

A framework possui uma funcionalidade chamada Active Records, que simplifica os comandos básicos de acesso ao banco (Select, Update, Delete e Insert). Veja um exemplo de um Insert, tirado do próprio user guide:

$data = array(
               'title' => $title,
               'name' => $name,
               'date' => $date
);
$this->db->insert('mytable', $data);

Simples, porém, pra utilizar este método dentro de um método inserir() numa classe de modelo, eu preciso sempre especificar a tabela e seus campos em um array com seus respectivos valores.

Utilizando Modelos que representam as Tabelas do meu banco, isto é, a classe conter atributos iguais aos campos das tabelas, podemos criar uma estensão da classe Model para não ter trabalho com estes métodos, e fazer nossos modelos estenderem desta nova classe.

O código abaixo deverá ser colocado num arquivo chamado MY_Model.php dentro do diretório application\libraries, que o CI se encarrega de carregá-la pra você (1).

class MY_Model extends Model
{
    var $nmTabela;
    var $nmCampoId;

    /**
    * metodo construtor da classe
    * @param    [str] nome da tabela do objeto
    * @param    [str] nome do campo identificador do objeto
    */
    function MY_Model($nmTabela, $nmCampoId)
    {
        $this->nmTabela  = $nmTabela;
        $this->nmCampoId = $nmCampoId;

        parent::Model();
    }

    /**
    * metodo de insercao no banco
    * @param    [arr] array com os dados do objeto para insercao do banco
    * @return   [boo] sucesso ou falha no processo
    */
    function inserir($arrDados)
    {
        $atributos = get_class_vars( get_class($this) );
        foreach ($atributos as $nmAtributo => $valor)
        {
            if ( ($nmAtributo != 'nmTabela') && ($nmAtributo != 'nmCampoId') )
                $this->$nmAtributo = $arrDados[$nmAtributo];
        }

        return $this->db->insert('usuarios', $this);
    }
}

Dessa forma, toda classe de modelo da sua aplicação terá um método inserir() onde você só precisa passar por parâmetro um array (provavelmente vindo de um formulário) com o nome dos campos da classe e seus valores. O método se encarrega de definir os valores para os atributos do objeto e chamar a função de inserção.

Como o artigo ficou um pouco grande, resolvi omitir os métodos alterar() e excluir(), mas o arquivo completo está disponível para download aqui. Este foi apenas um exemplo simples do que podemos fazer em cima de uma boa estrutura.

(1) – Apesar do que diz o manual, o Code Igniter não carrega o MY_Model automaticamente. E não adianta também usar o autoload, pois ali o Model ainda não foi carregado. Você pode criar um MY_Controller que executa a chamada do MY_Model automaticamente, usando: $this->load->model('model');. Acredito que seja um bug do CI, mas ainda vou verificar com mais calma.

ATENÇÃO: No meu entendimento existe um BUG no framework em relação ao carregamento do MY_Model, conforme observação acima. A solução foi reportada para a equipe do CI, mas não tive retorno. A quem interessar, veja mais informações no artigo do BUG no Loader de Models.

Written by Newton Wagner

December 1st, 2006 at 9:28 am

Framework Code Igniter

with 5 comments

Dando início aos estudos de frameworks PHP, vou falar um pouco sobre a que eu estou planejando adotar para trabalhar em um projeto pessoal. Apesar de não ter avaliado as outras fws disponíveis, como estou sem muito tempo, a maneira de testar vai ser usando.

Framework Code IgniterOuvi muita gente falando bem do Code Igniter, e resolvi dar esse voto de confiança. :)

Pra começar, gostei muito do guia do usuário. Explica o básico sobre o funcionamento do framework, fazendo que você passe pelas 3 camadas do MVC em um piscar de olhos. Além disso, explica algumas particularidades da framework, com uma linguagem tranquila e muitos exemplos.

A participação da comunidade é bem ativa, e a primeira dúvida que eu tive sobre a existência de uma funcionalidade nativa da framework (ou se eu teria que implementar), encontrei rapidamente no fórum, que tem uma boa quantidade de posts.

Com a mão na massa, em poucas horas já comecei a me sentir a vontade, implementando algumas melhorias estendendo algumas classes do núcleo da fw. Estou apenas começando, mas já acredito que ela vai cumprir seu papel e me poupar muitas horas de programação, além de me oferecer uma boa organização do código. Com o tempo, vou postando aqui mais informações sobre minha experiência com o Code Igniter.

Obs.: Para os fãs do CakePHP, entrei em contato com o dono do site cakephp.com.br e ele ficou de escrever a respeito da fw. Vamos aguardar…

Written by Newton Wagner

November 24th, 2006 at 9:32 am

Por que é tão dificil encontrar bons programadores?

with 2 comments

[atualização]Incrível, mas o artigo foi removido da base do Web Insider. Não sei se foi a administração do site ou o próprio autor, mas acho que não poderia ter sido feito nada pior.[/atualização]

Em artigo publicado no Web Insider, Marcelo Okano (já citado aqui anteriormente) nos dá a visão das agências na contratação de programadores, fazendo a pergunta: Por que é tão difícil encontrar bons programadores?

O artigo começa muito bem, falando sobre as complexas questões do mercado de trabalho na área de desenvolvimento, porém, depois o autor inicia uma série de generalizações, indicando uma marginalização dos profissionais da área.

Não vou me aprofundar nos trechos que dizem coisas como: passou pela cabeça do programador limpar as bases de dados e apagar os arquivos. Se passou pela cabeça do programador, poderia ter passado na cabeça do médico, do eletricista, do mecânico e de qualquer profissional picareta que existe por aí. É preciso lembrar que esse tipo de atitude não está relacionada à área profissional, e sim à pessoa.

Eu credito essa “dificuldade” de se encontrar bons programadores, ao próprio mercado, que atravessa uma fase de carência por profissionais, gerando uma enorme quantidade de oportunidades. Quem oferece as melhores condições de trabalho, fica com os melhores profissionais, e é aí que as agências podem estar encontrando tal dificuldade. Olhando de fora (nunca trabalhei em agência), eu acredito que o profissional disputado entre as agências sejam os publicitários.

Sendo assim, as agências, ao invés de contratar estagiários ou programadores inexperientes acreditando que eles conseguirão gerenciar um projeto de desenvolvimento do dia pra noite sem cometer erros, deveriam buscar outros caminhos, como terceirização ou até mesmo investir na área, montando uma pequena fábrica de desenvolvimento própria. Depende do custo/benefício de cada solução.

Written by Newton Wagner

November 23rd, 2006 at 8:34 am

Microsoft, Google e Yahoo! unidas pelo Sitemaps

without comments

As gigantes se juntaram para unificar o protocolo Sitemaps. Você encontra mais informações sobre o protocolo no website oficial.

Written by Newton Wagner

November 16th, 2006 at 11:48 am

Posted in desenvolvimento

Tagged with

Frameworks em PHP

without comments

Depois de constatar mais uma vez que a visão que muita gente tem do PHP ainda é aquela de sites e formulários, como relatei antes, fiquei pensando sobre o que pode ser feito para mudarmos essa imagem. Foi então que surgiu a idéia de divulgar as frameworks escritas na linguagem. Para isso, acredito que com a extensa comunidade PHP pode formar uma extensa rede de informações a esse respeito, e é esse o objetivo deste post: convocar a comunidade a divulgar as frameworks.

Caso você já tenha utilizado uma ou mais das frameworks abaixo, escreva sobre ela no seu blog, ou, caso não tenha um, me envie para que eu publique aqui mesmo (claro que dando os devidos créditos ao autor).

Written by Newton Wagner

November 16th, 2006 at 10:31 am

Posted in desenvolvimento,php

Tagged with ,