Book review of "TYPO3 Extension Development" by Dmitry Dulepov
The market for english books on TYPO3 is still very thin - compared to german books. This possibly depends on the great popularity TYPO3 enjoys in germany. Unfortunately a lot of these german books are oversized. Few of them are concentrating on one audience (editors, administrators, developers) and their specific task, but covering the full range of topics on TYPO3. For a TYPO3 extension developer that meant to skip 3/4 of the content of most books. In contrast, "TYPO3 Extension Development" by Dmitry Dulepov, recently published by Packt Publishing has chosen a different approach.
First impression
The first positive impression when unpacking the book was that it covered only 217 pages. It was looking like a
book, which can be read entirely without getting tired of stuff you don't want to read anyway. As the title
implies, the book addresses TYPO3 extension developers, especially those without much experience in extension
development.
It guides the reader through the complete process of extension development, covering both
frontend plugins and backend modules with well-chosen real world examples.
Although I feel quite familiar
with the task of extension development, I was surprised that the book still revealed some gems of extension
development for me, especially the in-depth study of frontend plugins (chapter 5). But more on that later.
Book structure
The book is well structured, starting with general topics on hacking with TYPO3 and getting more and more specific to the end. This reminded me of the talks Dmitry held at T3DD08, which were also very well organized and easy to follow.
Chapter 1 ("About TYPO3 API")
The first chapter concentrates on TYPO3 API. Since the API is very huge, the chapter concentrates on the some relevant topics, leaving out unnecessary details which anyway could be found on the official documentation on typo3.org or any doxygen created API docs. It's flavored with some code examples which helps to understand the use of the discussed items. Since this is the first chapter of the book, I would have expected a more general introduction in the task of extending TYPO3, especially for the unexperienced user.
Chapter 2 ("Anatomy of a TYPO3 extension")
The second chapter discusses the usual files inside an extension. It rather addresses people which are new to TYPO3 extension development, giving an overview about the purposes and uses of extension files and directories. Nevertheless it covers the mandatory knowledge for the following chapters.
Chapter 3 ("Planning Extensions")
If you have already heard about the author Dmitry Dulepov and follow his blog, you'll probably won't be surprised about chapter 3. Dmitry doesn't hide his passion for elaborate planning. Consequently, this topic got a separate chapter. It guides you through general and TYPO3 specific planning questions, which need some thinking before starting to code. In practice the chapter describes the goals of the example extension, which will be coded in the following chapters. So don't fear to be confronted with boring theoretical stuff, but with tips which help to code standard-compliant extensions.
Chapter 4 ("Generating Extensions")
This chapter is a guide on how to use the extension kickstarter for generating the base structure of an extension. Like chapter 2 it also addresses people without or with less experience in extension development. Screenshots and their description explain the main sections of the kickstarter. Unfortunately only some parts of the kickstarter are discussed. Creating services and clickmenu items for example are not, which personally left me with a mixed feeling. If you depend on these kind of extension features, you'll have to search elsewhere for the necessary information. Fortunately, François Suter has recently published a completely rewritten manual about TYPO3 services.
Chapter 5 ("Frontend-Plugin: An In-Depth Study")
Chapter 5 focuses on some particular parts of a TYPO3 extensions. These are plugin configuration, templating, localizing and caching, which are essential for frontend plugins. Each part and its particular difficulties are explained and demonstrated with code examples. Some of you probably got in contact with the deep jungle of TYPO3 caching, especially when reading the article "Mysteries of cHash" again and again, trying to finaly understand it. Dmitry manages to blaze a trail through that jungle with concise explanations and best practice examples. The only drawback in the caching chapter is a mistake in the noncached plugin example on page 111: it comes with USER instead of USER_INT. The alert reader will notice.
Chapter 6 ("Programming Frontend Plugins")
This section is the longest part of the book and discusses the coding of crucial parts of a plugin. It does so by using an example extension which presents website users. The reader learns how to create single and list views by writing and linking together PHP code, HTML templates, TS and FlexForm configuration and a simple (but very cool) AJAX portion. It's amazing to see how Dmitry manages to code rich features with that few lines of code. My favorite part is the use of stdWrap inside PHP.
Chapter 7 ("Programming Backend Plugins")
Chapter 7 is divided into two parts: database access by TCA (TYPO3 configuration array) and backend modules. Since most of the TCA parts are created by the kickstarter, the first part is accordingly thin. It describes only the essential parts of TCA. If you are interested in more details, the official core API documentation might be a better place to browse. Well, back to Dmitrys book: The second part begins with a short excursion on essential functions for backend modules, followed by a step-by-step howto about implementing a full featured BE module. The example which is used here displays user and page statistics. For my taste this part contains too much code and not enough explanation.
Chapter 8 ("Finalizing Extensions")
The last chapter leads the user through the documentation and publication process of an extension. A checklist helps to increase the overall quality of the extension.
Index
The book closes with an index, which is far too short. My first impression was that a page was missing in the book, but then I realized that the letters G, H, I, J, K, M, N ,O simply don't have any record in the index. That was very disappointing!
Conclusion
My overall impression of the book is that it contains many best practices in extension programming. It covers essential knowledge for coding a frontend extension with various features. Unfortunately the backend module part is too thin. Considering that the TYPO3 backend code is ugly and the API is hard to understand, this part should have deserved more attention. But altogether the book leaves the impression of a solid guide for extension developers. It was quite amusing to read because of its real-world examples. Finaly, don't forget to have a look at the various extensions Dmitry published and maintains.
My motivation
The publisher offered me a free PDF version of the book for writing a review. I rejected because I already had bought one half a year before writing this review. The main reason to write this article is that I appreciate the work of Dmitry for TYPO3 in general and his book in particular. The publisher "honored" my work afterwards with a free book on OOP with PHP by Hasin Hayder, but it turned out to be of poor quality.