PHP - Programando com Orientação a Objetos
(8167) (5)
CategoriasAndroid, Design, Protótipo
AutorVinÃcius Thiengo
VÃdeo aulas186
Tempo15 horas
ExercÃciosSim
CertificadoSim
CategoriaDesenvolvimento Web
Autor(es)Robert C. Martin
EditoraAlta Books
Edição1ª
Ano2023
Páginas416
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
Comentários Facebook