Review of the book "PHP Oracle Web Development" by Yuli Vasiliev (Packt Publishing). Book contents, highlights and impressions. A sample chapter is included.
A while ago the fine people at Packt Publishing sent me a copy of Yuli Vasiliev's "PHP Oracle Web Development". The book consists in almost 400 pages of solid content, and is targeted at beginners-to-intermediate PHP and Oracle developers who want to learn or have a deeper understanding of the interaction of the two technologies.
The first chapters cover the installation and connecting procedures, and present some of the alternatives to use Oracle with PHP: using the PHP OCI8 extension directly, PEAR::DB, ADOdb, or PDO.
A capital sin is it never mentions PEAR::MDB2 ;-)
The central chapters are dedicated to data processing, transaction handling, OO programming, security and caching (also using PEAR::Cache_Lite).
The last chapters are dedicated to XML, XSLT, SOAP and AJAX, and are packed with examples which are more than enough to get you started with those features. All the code examples are laid in a plain and very easy to understand way, yet consistently suggesting some best practices from the very beginning.
The first merit of this book is it shows how you can process data with the DBMS and not just to treat the DBMS like a dumb storage system.
For instance, there's a whole chapter explaining how to store, query and transform XML documents with PHP and with Oracle's internal XSLT functions, and there are many examples of STORED PROCEDUREs, TRIGGERs, transaction handling, etc.
A good part of the examples have a strong focus on security too. I found particularly interesting the explanation of alternative techniques to secure your tables, and to mask rows and columns for fine-grained access, using not only VIEWs, but also SPs, multiple schemas, PL/SQL packages, table functions and Virtual Private Database policies. On the PHP side, it goes all the way to create a custom PEAR::Auth container.
One of the most interesting paragraphs of the book describes the usage of Change Notification and notification handlers (a new feature of Oracle Database 10g Rel 2) for caching purposes. If you want a preview, there's also an online tutorial written by Vasiliev covering the same topic.
While some of the described techniques aren't Oracle-specific and could be used with any other DBMS and it would have been nice to dive deeper into some other unique Oracle characteristics, that was probably out of scope for an introduction to PHP and Oracle, and it doesn't detract from the merits of this excellent book.
The writing style is clear, even if IMHO it could have been more concise sometimes. For instance, reading continue anticipations and wrap-ups that stress the same concept can get a bit annoying after a while: "In the next chapter we're going to see...", "This chapter covers...", "Now that you have an idea on how...", "In this chapter we've learnt how to...".
Anyway, I guess that it's in the spirit of the old adagio "repetita iuvant", and it may make sense in a technical book (and it wasn't nearly as annoying as in Code Complete, for instance).
My overall impression is very positive. You can buy the book from Packt's site or from Amazon.
Here you can download a sample chapter (mirror).
Also, keep an eye on the Packt Support page for code d/l and errata notes.
Have a nice reading!