Análise do livro: Criando um e-commerce com CodeIgniter

Recentemente foi lançado o livro: Criando um e-commerce com o CodeIgniter do autor Ademir C. Gabardo e assim que foi feito seu lançamento, comprei-o na mesma hora.

No post de hoje quero fazer uma pequena análise sobre o conteúdo do livro e se vale a pena ou não comprá-lo.

Durante o texto, as frases em negrito expressam meus comentários.

A proposta do livro é a criação do zero de uma loja-virtual usando o CodeIgniter e também ensinando a desenvolver os principais módulos que uma loja-virtual deve possuir, como por exemplo:

  • Carrinho de compras.
  • Integração com um gateway de pagamento
  • Cálculo de Frete
  • Envio de e-mails para os clientes
  • Área Administrativa
  • Autenticação de usuários, etc.

O livro começa rapidamente com a história do CodeIgniter até chegar à versão 3.0, que é a utilizada no livro. Esta parte do livro é interessante para quem deseja conhecer um pouco mais de como são os bastidores da criação de um framework.

Nesta etapa o autor também detalha brevemente como será feita a criação do sistema da loja-virtual nos capítulos seguintes, explicando, também, que será usado o framework css bootstrap, que vai cuidar do visual do site.

Nos capítulos 2 e 3, o autor detalha como que um framework funciona, quais as novidades na versão 3.0 do CodeIgniter e também explica com riqueza de detalhes várias etapas das configurações dele.

Esta é uma parte muito importante pois para quem conhece o CodeIgniter somente superficialmente, aqui será possível tirar diversas dúvidas sobre como usar e configurar de maneira correta o framework.

Então, no capítulo 3, é iniciada a construção de um pequeno blog com o CodeIgniter, para que o usuário que nunca teve contato com o framework possa se sentir mais confortável quando se deparar com funções mais avançadas no decorrer do livro.

A intenção deste capítulo era iniciar o leitor no mundo MVC através do CodeIgniter, porém, o autor não usa o modelo MVC aqui, ou seja, as transações com o Banco de Dados são feitas diretamente no controller. O autor deixa claro isso ao entrar no capítulo, porém, eu acredito que não custaria nada ter abordado a camada Model aqui, também, para deixar o leitor mais familiarizado ainda com o framework.

Outra coisa que me incomodou um pouco também foi o fato de o autor usar praticamente todas as funções do framework para a impressão de html nas views. Eu acredito que não é só porque um framework traz várias funções em PHP que simplesmente enviam para a tela simples tags html, que deveríamos usar TODAS elas. Ao meu ver isso acaba que prejudicando seriamente a camada V (views), pois é onde deveria existir praticamente apenas HTML, e muito pouco de PHP.

Se um designer pegar o código da view e colocar em um editor visual de html, como o Dreamweaver, por exemplo, ele não conseguirá ver grande parte da tela final, pois existem muitas TAGs em PHP que só funcionarão com um servidor PHP rodando. Por exemplo: acho desnecessário utilizar a função heading(‘Texto’, 3) do framework só para imprimir um cabeçalho H3. 

Desta maneira, praticamente todo o código HTML que deverá estar na view, estará dentro de echos do código PHP.

Capítulo 4 – Iniciando a criação da loja online

Neste capítulo o autor dá uma breve introdução sobre o comércio eletrônico e inclusive fala também sobre a evolução da internet. Achei muito interessante, inclusive, confesso que alguns conteúdos ali escritos eram desconhecidos por mim.

Em seguida ele mostra o que uma loja-virtual deve ter e fala sobre algumas projeções sobre o comércio eletrônico no Brasil, que se mostra em grande expansão.

Fala também sobre os sistemas de cobranças, sistema de envio de mercadorias, demonstrando sobre qual escolher: correios ou uma transportadora.

Então, dá o início ao desenvolvimento da loja online começando pela tela inicial, onde é usado o Bootstrap.

Gostei bastante da explicação que o autor dá aqui sobre como é feito o cálculo de frete, e demonstra que geralmente as coisas não são tão simples assim de se calcular baseando-se apenas em altura, largura, comprimento e peso de um produto. Demonstra que existem outros fatores a serem considerados, porém, ao usar estas 4 variáveis, geralmente o valor do frete é satisfatório e atende à maioria dos consumidores.

No capítulo 5, é iniciada a parte de Administração da Loja, que é de extrema importância para gerenciar os produtos, categorias, preços, fotos, etc.

Na parte de desenvolvimento não há muito o que eu possa falar aqui. É basicamente o CodeIgniter sendo usado para construir algo bem específico, neste caso a loja-virtual.

A didática do autor flui bem durante o livro, porém, devo destacar que existem alguns erros de revisão no meio dos códigos. É o famoso copiar/colar de um código muito parecido, onde somente algumas variáveis são alteradas mas estas alterações só se mostram no texto, e não no código, que ficou o antigo, por um esquecimento talvez.

Para uma pessoa menos atenciosa, isso pode provocar dores de cabeça absurdas quando tentar rodar o código e ele não funcionar. Então fica a dica de uma re-revisão numa próxima edição.

Bom, chegamos ao ponto agora onde eu acho que o livro realmente deixou a desejar. São basicamente 2 reclamações que tenho, uma inclusive já mencionada acima.

1ª  A loja virtual construída pelo livro baseou-se na biblioteca Cart do CodeIgniter

Quando eu comecei a ler o livro, imaginei que o autor já saberia que esta biblioteca seria descontinuada a partir da versão 3.0, e que ela ainda está lá apenas por questões de retrocompatibilidade. Isso realmente me deixou um pouco decepcionado, pois não é difícil de se construir um carrinho de compras, ainda mais usando as funções nativas do CodeIgniter para criar algo do tipo.

Esta informação está descrita claramente no ChangeLog do CodeIgniter 3.0 e que não é recomendado o uso da biblioteca cart nos seus projetos. Você pode ver isto clicando aqui.

Ou pelo menos, o autor poderia ter colocado um aviso dizendo que a biblioteca será descontinuada em versões futuras, apenas para que o leitor fique avisado.

2ª O uso excessivo de funções em PHP que cospem tags HTML nas views

Já falei sobre isso mais acima, e realmente é algo que me incomodou bastante. Uma das principais vantagens do MVC é a separação dos códigos, basicamente o programador trabalha em cima dos Models e Controllers e as Views ficam a cargo dos designers, porém, no livro existe muito “echo” que simplesmente mostra TAGS html no código, como por exemplo a função heading(). Eu acredito que o programador deva colocar na balança se vale a pena usar todas as funções que o framework fornece em seus projetos,

Eu particularmente não gosto de usar funções como a heading(), pois não vejo vantagem. Se um designer abrir essa tag em um editor WYSIWIG vai receber apenas um texto em PHP, e não vai poder visualizar, por exemplo, como poderá ficar o visual final da página.

Porém, funções que geram seu conteúdo dinamicamente acho válidas, como por exemplo: anchor(), que cria um link já levando em conta as configurações de URL base do CodeIgniter. Porém confesso, que nem mesmo esta função eu gosto de usar muito.

Outra função que também não tenho o o costume de usar é o form_input() da biblioteca form do CodeIgniter. A função basicamente cria os campos dentro dos fomulários, mas novamente caímos naquele caso do designer, que não é obrigado a saber pra que serve isso, podendo prejudicar seu trabalho.

Isto acopla demais o funcionamento do site a um determinado framework, e o desginer não tem como conhecer qual framework está sendo usado ou simplesmente saber o que é um framework.

Mas digo novamente, isso vale para cada programador.

No final do livro o autor também fala sobre algumas outras funcionalidades do CodeIgniter, como por exemplo: como criar seus próprios arquivos de configurações, como conectar em mais de um banco de dados, captcha, manipulação de imagens, etc. Inclusive com exemplos. Gostei bastante desta parte.

O veredito

Em fim, gostaria então de dizer a você, caro leitor, se vale a pena ou não comprar o livro, e minha resposta é:

SIM, vale a pena.

Por mais que o livro tenha alguns probleminhas, acredito que a maior parte do seu conteúdo cumpre o que promete e que quem lê-lo terá uma boa base para conseguir criar uma loja online e se aprofundar mais no CodeIgniter.

Se você também já comprou o livro e quiser mencionar algo a respeito, use os comentários abaixo.

Para comprar o livro, clique aqui. 

Abraços

Fábio

Fábio S. Reszko

Sou Programador PHP desde 2006 e eu acredito sinceramente que programar usando um Framework PHP é a solução para os problemas de códigos desorganizados, difíceis de entender e de dar manutenção no futuro. Se você também acredita nisto, então fique à vontade em explorar meu blog.

  • Marcelo Silva

    Obrigado fabio por mais uma contribuicao. Voce tem realizado um importante trabalho, mantendo esse site so

  • Raphael Vidinha

    Fabio, sou leitor do seu blog e sou tb seu aluno no php expert.
    Comprei tb este livro em seu lançamento, gostei bastante do que vi… ainda não o li todo… pois atualmente estrou trabalhando em uma empresa que utiliza o zend framework e leio bastante sobre ele… mas o framework que gosto e quero me especializar é o codeigniter. Li aqui sua opinião sobre o livro… e gostaria muito que vc pensasse em escrever um artigo ou mesmo montar um curso de CI 3 com este tema… seria muito bom! Gostaria de ver os mesmos problemas resolvidos de forma diferente… seria de muita valia para nosso conhecimento.

    Agradeço pelo seu bom trabalho!

  • Olá Raphael. Já estou trabalhando em um curso com o CI 3 onde vou ensinar a fazer uma loja virtual, mas ainda está na fase de planejamento. E mais uma coisa: quem é meu aluno vai ter uma surpresa quando eu lançar o curso. Abraços

  • julioborges77

    Olá Fábio, também já comprei este livro, não com o intuito de construir uma loja, mas vi que muitos tópicos seriam interessantes para outros projetos.

    Também concordo com você quanto às views, acho desnecessário escrever todo o html com echo. Eu prefiro escrever html puro mesmo, fica mais bonito e facilita a manutenção.

    Esperando o curso CI 3.

  • Raphael Vidinha

    Boa Fabio… aguardando anciosamente então!!
    Tem uma previsão de lançamento?
    Aguardando… abraços

  • Pretendo fazer um curso de qualidade extrema. No momento estou planejando os conteúdos das aulas e módulos. Mas acredito que em no máximo 6 meses eu consiga lançá-lo. Quando isto for ocorrer, entrarei em contato com todos os alunos, não se preocupe. 🙂

  • Raphael Vidinha

    Fabio… como seu aluno e futuro consumidor do curso, gostaria de expor minha opinião!
    Já q o curso tratará de temas tão usuais da atualidade, gostaria de ver este curso com as tecnologias tb atuais… tipo… criação de uma API… consumo de dados via gatway… formas de pagamentos diferenciados… uma possivel implementação de pagamentos recorrentes(assinaturas)… enfim… gostaria de ver um curso enquadrado na realidade dos dias atuais… pois o conceito de loja virtual esta mudando a cada dia… trabalho em uma empresa de porte medio/grande onde a principal fonte de renda é um ecommerce… e vejo muito como este cenario vem se modificando… então esta é minha sugestão! Se puder aplicar a realidade dos tempos atuais nossa este curso será épico… pois hj em dia abordar uma loja virtual que so vende produtos não é de fato o cenário atual… entre outras coisas!
    Então deixo aqui a minha sugestão!
    Grato amigo!

  • Legal a sua dica. Eu já tinha em mente mesmo ensinar criar o próprio sistema de pagamento, através de cartão de crédito/boleto bancário, etc. e também a conectar e gateways prontos, como pagseguro, paypal, etc. Com mais dicas assim, vou conseguir criar algo bem legal.

  • Ademir

    Gostei do texto Fábio S. Reszko, seria bom se fosse possível ter
    esse tipo de feedback durante o processo de produção do livro, mas infelizmente
    não há como fazer em tempo. Certamente algumas coisas poderiam ser melhoradas.

    Algumas coisas que vale a pena comentar.

    Sobre MVC, essa polêmica é bem antiga, o fato e que o CI tem uma “abordagem
    fraca” ao MVC. Sim, você pode fazer tudo seguindo o design pattern, mas o CI não obriga, na primeira seção
    do livro a ideia é que o leitor se familiarize com o framework, para então,
    iniciar um projeto maior.

    Sobre a
    Cart Library, infelizmente essa intenção de descontinuar a biblioteca apareceu
    aos 45 do segundo tempo no processo de escrita, haviam duas escolhas, usar a
    library ou abandonar o livro, porque para escrever uma nova library, apesar de fácil,
    mudaria completamente o texto do livro. É importante lembrar também que para
    quem está preocupado com a library, basta copiar a library nativa e adapta-la
    para uma Third-part library. Nada muito complexo.

    Sobre as
    views, realmente, é uma questão de estilo de escrita de código, se você prefere
    escrever o HTML puro e inserir PHP tão somente onde é necessário isso é possível,
    e acredito que aqueles que tenham construído o primeiro exemplo do livro com
    sucesso já terão conhecimento suficiente para escrever as views do segundo
    exemplo de maneiras distintas. Uma coisa muito limitante ao escrever código-fonte
    para um livro é o espaço. Qualquer coisa que ocupe mais de uma página é ruim
    para as pessoas lerem. O espaço é um fator muito limitante.

    Fico feliz
    em saber que o livro está sendo útil para a comunidade. Como desenvolvedor
    acredito que o E-commerce seja um dos possíveis caminhos para que os
    desenvolvedores construam um produto que possam comercializar.

    Obrigado a
    todos os leitores pelas criticas e contribuições.

  • Olá Ademir. Realmente, pra gente que está de fora é complicado vermos como é a vida de um escritor de livros, pode parecer que é fácil mas como você falou, geralmente é tudo corrido e nem sempre dá tempo de mudarmos algo que encontramos pelo caminho. De qualquer modo, parabéns pelo livro!

  • helio

    Fábio, comprei o livro e comecei
    a ler essa semana, não tenho uma opinião formada, por isso seu artigo foi de
    muita ajuda.

    Gostaria de fazer algumas
    sugestões sobre seu curso:

    1º Referente à meio de pagamento,
    se você ensinar a implementar cartão e boleto, sem gatway será algo inédito, RECOMENDO;

    2º Entretanto, poderia criar uma
    arquitetura extensiva, para ampliar os meios de pagamento e entrega/Frete, e
    claro ensinar como implementar uma segunda opção de pagamento ex. PagSeguro,
    usado esta arquitetura;

    3ª Outro ponto que considero interessante
    e a parte teórica, sobre a regra de negocio, vejo muitos cursos na internet prometendo
    ensinar a desenvolver loja etc. Assim que começamos a ler/assistir o conteúdo fica
    evidente que toda regra de negocio está sendo negligenciada, percebe-se que na
    verdade o objetivo é ensinar usar um Framework/tecnologia etc. E não a criar o
    produto/loja, tudo não passa de exemplos pobres sem qualquer embasamento teórico,
    ou seja recomento que desenvolva um
    curso pensado no desenvolvimento da loja e não só em ensinar o CI.

    Abraço

  • Obrigado Hélio, dicas anotadas.

  • William Francisco Leite

    Olá Fábio, já tentei comprar esse livro umas 3 vezes mas sempre fico na dúvida sobre o conteúdo!

    Concordo em 100% nessa questão que vc citou da Views com funções PHP, trabalho com HTML puro e com o template engine Twig, o resultado das Views fica muito bom e legível para manutenção.

    Abs.

  • Comecei a acompanhar o livro e tenho uma dúvida… Meu xampp está na porta 83 por que eu uso a 80 para o C# e ai quando faço o link ele dá erro 404. Alguém sabe como solucionar esse erro? Estou ainda na parte do blog e estava tudo certo até essa parte… aff

  • Kane Chan (Professor Kane Chan

    Estou acompanhando o livro, e não consegui representar o exemplo da página 109 (Figura 4.6). Alguém passou por essa dificuldade? No momento que clico no Menu de “Produtos” aparece a mensagem “Message: Undefined variable: categorias”.

  • Leonardo Amaral

    Boa tarde. Consegui ler o livro todo e aplicar o código, mas percebi que há alguns erros. Testando o e-commerce, não consegui excluir um produto da loja na parte administrativa. Diz que não é possível excluir, pois o produto está ligado a uma categoria. Revi o código e tentei fazer algum as alterações e não consegui. Ainda to tentando consertar, mas como estou iniciando no framework, está um pouco complicado. Quem tiver uma solução e puder enviar, fico agradecido.

    Abraços

  • Eu comprei o livro não pela loja, mas pela abordagem de alguns tópicos que me interessou, sim, essa parte de fazer tudo no controller ( views e models) é muito dolorido, principalmente pra quem é iniciante e não viu o primeiro livro, mas o livro é de ótima leitura e didática.

  • Clayton Mergulhão
  • douglas88

    OLá Fábio, sou iniciante em codeIgniter, com este livro dá pra mim criar uma loja e vendê-la a um cliente ? Obrigado.

  • Juliano Carneiro

    Comprei o livro e tenho a mesma opinião que a sua.
    Gostei do seu blog. Parabéns…

  • Juliano Carneiro

    Comprei o livro e tenho a mesma opinião que a sua.
    Gostei do seu blog. Parabéns… 🙂

  • Pablo Martins

    Pessoal, comprei o livro e comecei a ler… Porém, estou tendo dificuldades em montar o layout da pagina principal da loja, alguns recursos do bootstrap funciona perfeitamente, já outros não, alguém passou por algo parecido?

  • Marcelo Rocha

    Olá, me interessei pelo curso. Você criou? Onde posso encontrar?