PHP - Programando com Orientação a Objetos

Receba em primeira mão o conteúdo exclusivo do Blog, além de promoções de livros e cursos de programação. Você receberá um email de confirmação. Somente depois de confirmar é que poderei lhe enviar o conteúdo exclusivo por email.

Email inválido.
Blog /Livros /PHP - Programando com Orientação a Objetos

PHP - Programando com Orientação a Objetos

Vinícius Thiengo17/12/2015
(2139) (5) (43)
Go-ahead
"Dar o seu melhor neste exato momento vai colocá-lo no melhor lugar possível no momento seguinte."
Oprah Winfrey
Código limpo
Capa do livro Refatorando Para Programas Limpos
TítuloRefatorando Para Programas Limpos
CategoriaEngenharia de Software
AutorVinícius Thiengo
Edição
Ano2017
Capítulos46
Páginas598
Comprar Livro
Conteúdo Exclusivo
Receba em primeira mão o conteúdo exclusivo do Blog, além de promoções de livros e cursos de programação.
Email inválido
Capa do livro "PHP - Programando com Orientação a Objetos" de Pablo DallOglio
Título
PHP - Programando com Orientação a Objetos
Categoria
PHP
Autor(es)
Pablo DallOglio
Editora
Novatec
Ano
2009
Edição
Páginas
573

Opa, blz?

Terminei a leitura do livro “PHP - Programando com Orientação a Objetos” de Pablo Dall’Oglio, editora Novatec. A edição que li foi a 2ª, ano de 2009. Porém a Novatec lançou a 3ª edição que provavelmente têm “n” características que não haviam ainda no PHP em 2009. Pablo é também autor do livro “Criando Relatórios com PHP”.

O livro é muito bom, primeiro porque é para qualquer nível de developer, mesmo aqueles que estão iniciando no PHP ou mesmo na vida de programador (assumindo que esse ultimo tem conhecimentos de lógica de programação). Não há o capítulo sobre instalação do PHP (caso você esteja apenas iniciando no dev PHP), porém não é nada que você não encontre fácil em vários blogs. Segundo porque o livro vai lhe ensinar a desenvolver aplicações PHP já no paradigma que mais traz bons resultados na programação, orientado a objetos e ainda aplicando padrões.

O autor na humildade e com maestria apresenta primeiro o que é o paradigma orientado a objetos e que é um mundo muito maior do que apenas um único livro, mesmo assim ele apresenta os principais conceitos (encapsulamento, polimorfismo, agregação, composição, …) junto a exemplos.

A vantagem de livros em PHP que já lhe ensinam no paradigma OO é que você já inicia no caminho onde a aplicação de padrões é mais conhecida entre outras “n” vantagens como a própria manutenção / evolução do código que fica bem mais tranquila. Falo isso, pois vim do paradigma procedural (arquivos com dezenas de funções do sistema, …) e sei que a tendência do developer PHP é iniciar nesse paradigma… tive alguns problemas com o paradigma procedural e mesmo sabendo do menor consumo de memória dele quando comparado com o paradigma OO (o autor fala sobre isso no livro) o custo / beneficio da utilização do OO ainda é maior.

No livro é muito importante que siga cada exemplo e se esforce para entender os padrões aplicados, pois no capítulo 7, na aplicação final, o autor vai utilizar muitas das classes criadas nos capítulos anteriores.

Quando inicie a programação OO no PHP tentei trazer o que sabia sobre OO do Java e então aplicar ao PHP, belo mistake, o alto consumo de memória quando você criar classes imensas com vários getters e setters faz com que, por exemplo, a memória reservada para a superglobal $_SESSION seja resetada, consequentemente seu user logado é deslogado. Falo isso para ficar atento que no PHP você tem métodos chamados “mágicos” (o autor chama-os de interceptadores) que lhe beneficiam, por exemplo, na utilização do modelo de classe com getters e setters… no PHP não precisamos declarar as propriedades da classe, mesmo vendo isso como uma boa escolha. Fique atento também aos padrões da sessão Gateways do capítulo 4, excelente abordagem.

Para os fãs do MVC, o autor também o aborda no livro. Descobri com a leitura que a velha e conhecida classe Object do Java, na verdade é a representação de um padrão chamado Layer Supertype, que é uma classe pai de todas as outras classes do domínio do problema e que tem somente as entidades (propriedades e métodos) comuns a todas as outras classes. Esse é um bom padrão para se utilizar no PHP (a classe padrão StdClass do PHP não é super classe como a Object em Java).

Quando em persistência de dados o autor manda muito bem em falar sobre o PDO e sobre transações, porém é abordado o padrão Query Object, que tem como “possível” vantagem a não codificação na mão das SQLs. Eu ainda prefiro ficar com variáveis Heredocs que têm minhas SQLs personalizas e completas, todas encapsuladas na camada de persistência de dados, além das chamadas a Stored Procederes que evitam que nós developers perdemos eficiência no código PHP realizando “n” chamadas a base de dados quando com uma única Stored Procedure podemos realizar toda a tarefa. 

Resumo do design pattern Query Object, não enxerguei o custo / beneficio, principalmente porque saber trabalhar com SQL é de suma importância (tentar otimiza-las sempre que possível), pois a base de dados tende a ser a primeira parte a cair em seu sistema se ele começar a angariar novos e novos usuários. Outro ponto negativo a notar na aplicação do Query Object no livro é que o autor comenta sobre apresentar a versão com utilização de JOINs, porém não foi abordada essa parte.

Outro ponto a se refletir é a abordagem do HTML e CSS sendo construídos via PHP, a parte do HTML ficou show de bola, é muito válida sua utilização, porém a do CSS, não vi beneficio nem mesmo se você for full stack web developer (developer web frontend e backend), pois o critério de escolha do autor foi utilizar sempre apenas uma linguagem (tudo no PHP), porém quando for implementar os layouts modernos que vemos na Internet hoje em dia, o CSS, se você não for muito bom em otimiza-lo, ficará grande o suficiente para tornar a implementação via PHP não viável, a coisa fica ainda mais séria se for construir layouts também para versões mobile com o uso de media-queries. Logo eu optaria pelo modelo de construção de HTML via código PHP (não todo o HTML, mas sim como abordado pelo autor, para formulários, tabelas e dialogs), mas o CSS ficaria com arquivos .css separados. Porém, muito provavelmente, se estiver em equipe, ambos os modelos, com HTML e CSS via código PHP, tendem a cair por terra devido a ter designers, developers backend, … na mesma equipe.

A explanação do Lazy Initialization é muito show de bola, pois já lhe adianta, implicitamente, problemas que pode ter se trabalhar seu código obtendo sempre vários dados da base de dados, mesmo que precise de alguns poucos apenas.

Ficou faltando um pouco de segurança, mesmo que somente uma única sessão de algum capítulo. O autor utiliza muito uma prática que condeno, colocar as chamadas aos métodos e funções do sistema via GET (na url), até mesmo colocando os ids dos registros na url… mas isso não acaba sendo um problema no livro, tendo em mente que segurança é um tópico também muito grande e não era objetivo do livro.

Na 2ª edição, por ser de 2009, nada sobre Packagist.com (para busca de componentes e evitar reinventar a roda), Composer (esse em apoio ao Packagist) e PSR (PHP Standards Recommendations), mas em 2009, se não me engano, esses ainda não existiam.

No final do último capítulo o autor fala sobre WebService, muito boa explicação, porém não esqueça que em 2009 o JSON não tinha tanta força quanto o XML, e em processamento o parse JSON é bem mais leve que o SOAP / XML. Tente o ksoap2 no Android, nem de perto a eficiencia do Retrofit 2.0 com JSON.

Bom, o livro é muito show de bola, principalmente para developers PHP que ainda não trabalham com o paradigma orientado a objetos e para developers iniciantes, em programação ou em PHP. Apesar dos pontos negativos, tenha em mente que a versão que li é de 2009 e que em 2015 foi lançada a 3ª edição (torcendo que tenha ao menos, como adição de conteúdo, o Packagist, o Composer e os PSRs). Muito indiquei o “Use A Cabeça! PHP & MySQL” como sendo uma excelente leitura para iniciantes, porém não abordam a orientação a objetos no nível do “PHP - Programando com Orientação a Objetos”, logo recomendo essa a leitura para iniciantes no OO e em PHP. Porém partir da 3ª edição.

O autor utiliza muito o PostgreSQL, mas todos os exemplos com persistência rodaram sem problemas no MySQL. Caso você já tenha a 3ª edição ou está para adquiri-la, se não houver os assuntos sobre Packagist, Composer e PSR. Envie um email ao autor solicitando uma extensão online sobre esses assuntos, igualmente fez o Ricardo Lecheta para o livro “Google Android” 4ª edição. A solicitação de permissões de forma dinâmica saiu como default a partir do Android 6 e ele logo fez um post explicando sobre o assunto e apresentando como seria em um dos exemplos do livro. Como dica, mesmo sendo pago o IDE PHPStorm é uma excelente escolha para aumentar a produtividade no dev PHP. Então é isso, vou de 4 estrelas, pois estou falando da 2ª edição e com expectativas muito boas sobre a 3ª edição.

Link para acesso ao vídeo do autor do livro falando sobre a 3ª edição

Vlw

Receba em primeira mão o conteúdo exclusivo do Blog, além de promoções de livros e cursos de programação.
Email inválido

Relacionado

Rápido e DevagarRápido e DevagarLivros
Super CérebroSuper CérebroLivros
Previsivelmente IrracionalPrevisivelmente IrracionalLivros
De Zero A UmDe Zero A UmLivros

Compartilhar

Comentários Facebook

Comentários Blog (5)

Para código / script, coloque entre [code] e [/code] para receber marcação especifica.
Forneça seu nome válido.
Forneça seu email válido.
Forneça o comentário.
Enviando, aguarde...
Luiz Felipe Evaristo (1) (0)
07/01/2016
Ola Thiengo, estou lendo a segunda edição desse livro e estou Gostando.
Obrigado pelo review pois foi atravez desse review que busquei o livro na biblioteca da faculdade.
Responder
Johnathan (1) (0)
17/12/2015
Olá Thiengo,você teria em mente um livro falando sobre canvas no androide,qual livro você indicaria,outra coisa é se você teria algum vídeo falando  como atualizar banco de dados com  lib volley,
Responder
Vinícius Thiengo (2) (0)
17/12/2015
Fala Johnathan, blz?
Canvas li o Business Model Generation, mt bom por sinal. O canvas é geral, não é especifico para uma tecnologia, produto ou serviço... logo o que é apresentado no livro pode ser utilizado tb para um projeto Android. Porém esse livro é de 2010, o mais atual e direcionado para produtos é o "Value Proposition Design" (nome em inglês, mas o livro é em português), é como se fosse a 2ª edição, mas preferiram lançar com outro nome.

Sobre o Volley, não tenho esse vídeo... mas vc diz enviar dados de um form Android para seu server Web, por exemplo, e assim atualizar o bd? Se sim, depois que os dados chegam a linguagem de backend de seu server, o procedimento é igual no dev convencional Web. Dê uma olhada no Retrofit 2.0 (http://www.thiengo.com.br/library-retrofit-2-no-android), é mais atual e eficiente que o Volley. Abraço
Responder
heraldogama (2) (0)
18/12/2015
Eu utilizo o Retrofit 2.0 com PostgreSQL e funciona muito bem. Vale a pena estudar e utilizar.
Responder
felipe (2) (0)
17/12/2015
eu tenho este livro para vender bem barato, se alguem interessar me escreve no contato.di@gmail.com
Responder