Mar. 27., 2009

Book review of "TYPO Extension Development" by Dmitry Dulepov

Author: . License: Creative Commons License CC BY-SA 3.0, published on t3node.com

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.

Dulepov, Dmitry (2008): TYPO3 Extension Development : Developer's guide to creating feature rich extensions using the TYPO3 API. Birmingham: Packt Publishing

First impression

The first positive impression when unpacking the book was that it covered only 217 pages. Book cover image 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.

--> Back to the list of articles

License

Licensed under creative commonsThis article is licensed under the Creative Commons License CC BY-SA 3.0. You are free to share (copy, distribute and transmit) and to remix (to adapt) the work under the following conditions:

  • You must attribute the work by mentioning the name of the author (Steffen Müller) and setting a link back to the original article using its URL.
  • If you alter, transform, or build upon this work, you may distribute the resulting work only under the same or similar license to this one.

Comments

Leave a comment

Sorry, due to technical issues, commenting is disabled at the moment. I'm on it.