Friday, October 26. 2007
The yearly International PHP Conference in Frankfurt (or like I usually say: the family meeting) is approaching rapidly and I'd like to invite you to join me in my Hands on eZ Components full day workshop. The session will take place on the first workshop day, which is Sunday the 4th of November, and will provide 6 hours of bundled eZ Components knowledge to you.

At the beginning of this workshop I will give you a general overview on eZ Components, show you the most important concepts and illustrate our architecture and design descisions. After that, we will start digging into code and you will see, how different components work in practice. Using a practical example applications to see working code I will explain to you, you are also invited to make me change it and possible exchange or add a feature and show you a different component. Some of the most interessting components - like Mail, Template and Graph - will be shown in detail and give you a good impression what eZ Components can do for you and how you effectively make use of them. Beside that, I will try to give you some insider tipps and tricks for your daily development and will possibly tab some OO design concepts and patters for explaination.
In addition to these learning aspects of my workshop, it should also give you the possibility to provide us with feedback on what you are missing in eZ Components, what you dislike and what you like about the library. Get into discussion with me and potentially other eZ Components development team members (like Derick and Kore), which will also be at IPC. So, seize the chance and tell us, what you think about our work!
And if you don't have a ticket for IPC, yet, take your heels and register now!
Monday, October 22. 2007
On November 20th dynamic-webpages.de will start with the first "Professional PHP" online training. This series of online sessions offers you "24 hours of PHP knowledge, from professionals, to professionals". Topics covered in this series of talks are:
- Object orientation and patterns
- Regular Expressions
- Object-Relational-Mapping
- Security
- XML and Webservices
- Testing with PHPUnit
- AJAX and PHP
- Debugging using Xdebug
- Image manipulation
- PEAR
- Zend Framework
- eZ Components
Several speakers will take care about the different topics, among those are Kore Nordmann (Regex, Images and PHPUnit), Christian Wenz (Security, XML, Webservices), Stephan Schmidt for the OO and patterns section and other community known experts. I myself will present the topics "Xdebug" and "eZ Components".
All talks will last about 2 hours (possibly a bit longer) and will take place on a dedicated day so you are not too filled up with knowledge afterwards. The sessions are presented in German language using a professional online training system, that allows you to interact with the presenter and other attendees in writing and speaking.
Since it is the first time this course is scheduled, you will receive a 200,- € discount when booking right now, so take your heels and jump over to the dynamic-webpages.de training and certification page and save your seat!
Thursday, October 18. 2007
The new semester has right begun, which basically means that the semester vacation as it was named earlier (now the lesson free time) is over. While that meant a lot of exams and work on the book for Kore and me at first, we had time for some vacation and finally to take care about a brand new eZ Components project:
Starting by the end of August we spent almost whole September full-time on designing and implementing this component. The goal was to design a flexible WebDAV server component, which can be used to edit whatever data source on an HTTP server through the WebDAV extension of the protocol, with the full lot of concerns in mind.
Who ever read RFC 2518 or even had a slight glance at it, might have noticed its quality. To state it plainly: It's bullshit. Inconsistencies, spongy phrases and un-logical behaviour definition wherever you look. No wonder, that almost every client behaves slightly differnet, so the first major concern was, that we did not now how clients would expect us to react.
Webdav component architecture - Click to enlarge
The result of the design phase included a custom summarization of the RFC including many other issues we stumbled over and is is a 3 level architecture for the component (as seen in the illustration). The 3 levels incorporate a lot of flexible configuration and adjustment possibilities, as well as a plugin API to realize the many extensions for WebDAV. We are currently working on the necessary client adjustments. While a lot of clients already work, Kore is on reverse engineering the M$ clients constantly, while I'm currently working on the first plugin: Locking.
If you would like to know more about this component and see it in action, come and visit my talk at the International PHP Conference 2007. The family meeting will as usual take place in Mörfelden (near Frankfurt am Main, Germany) from November 4th to 7th. We plan to have an alpha release of the component soon, so I believe you can right forward try it out at the conference and give us feedback.
Looking forward to see you all! :)
Tuesday, February 13. 2007
During my current exam phase I'm working on some tiny private project to relax after learning. In there I'm using a main controller class, which implements a singleton pattern and initializes several sub-controllers while being created. The singletons purpose is, that the other controllers can access to main controller and its functionality whenever they need, without storing a reference each. The code for the singleton looked about like this:
class tsMainController { public static function getInstance () { if ( self::$instance === null ) { self::$instance = new tsMainController(); } return self::$instance; } private function __construct() { $this->subController1 = new tsSubController1(); $this->subController2 = new tsSubController2(); // ... } }
What I experienced last night was quite annoying: Instead of my little app starting as usual, it spit out error over error in an endless loop. A few debugging minutes later, I found the suspicious code piece in one of the sub controllers:
class tsSubControllerX { public function __construct() { tsMainController::getInstance()->doSomething(); // ... } }
Basically, the sub controllers constructor accessed the main controllers singleton method, which is quite the purpose of it. But since the main controller itself did not finish its constructor, yet, the singleton method did not find a valid instance and started creating a new one. This step again created a new instance of tsSubControllerX and so on. I simply moved the construction code of the main controller into a new initialization method, so that the instance is ready before the sub controllers get instanciated.
So, whenever you mess around with lots of nested objects and a singleton, beware of this (absolutely logical) issue. I guess some of you already shared this experience, although in PHP web application environments you usually avoid such deeply nested object structures, but you possibly don't in other environments. ;)
Tuesday, September 19. 2006
I finally added a button for being a "Zend Advisory Board Member" to my blog. I did not have the logo so far.
Now that I saw that some professional PHP developers already took the exam, and considered it much better than the PHP 4 version 1 2 3, I am really proud of beeing part of the creators crew. I think we really created a good certification to make employers decide, if somebody is only a "PHP script kiddie", who thinks to know PHP because he has written his own crappy guestbook, or if someone is a professional PHP developer, who knows what he does.
Thanks to Zend for letting me being part of the certification crew, after I complained about the low level of the last exam! I hope to also be part of the PHP 6 certification creators! :)
Hehe, I actually did not take the exam myself, yet, because of a lag of time. Hopefully I will pass my own exam! ;)
Tuesday, May 3. 2005
I recently uploaded the slides from our workshop yesterday (XML and Webservices in PHP5.0/5.1, PECL and PEAR). The package includes all of our slides (253) and the examples used in the slides as complete source code. The download will be also linked in the support section of PEARWeb.
The workshop itself went quite good, although we had much to much information to present and did not even come to showing webservice packages from PEAR. But nevertheless I had the feeling the attendants enjoyed the session and learned some interessting stuff. Thanks to Stephan for the felicitous workshop!
See some opinions on our work:
- by Björn 1 2
- by Aaron 3 4
Sunday, February 27. 2005
UPDATE: This guide to set up a PEAR channel server has been deprecated by this howto, written by Greg Beaver. Anyway, the following text might still give you a few good hints.
Continue reading "Set up your own PEAR channel"
Wednesday, July 21. 2004
Domain)Factory (Germany's 5th largest web hosting company) recently announced to fully support PHP 5.0.0. For nearly every package Domain)Factory offers it's possible to enable PHP 5 support within a simple .htaccess. By default files with the extensiuon .php5 are run through it.
Nice to see that PHP 5 gets acceptance so fast. :)
Wednesday, July 14. 2004
It finally happened! PHP5 has recently been released.
See the announcement here, the changelog here and download the final versions of PHP 5.0.0 here.
The key features of the new major version are:
- The Zend Engine II with a new object model and a huge bunch of new features.
- The new SimpleXML extension for easy manipulation of XML as PHP objects.
- Bundled SQLite support.
- The new MySQL extension (MySQLi) for MySQL 4.1 and later.
- A completly new XML support, utilizing libxml2 (see [here http://www.xmlsoft.org/]).
- A brand new, built-in SOAP extension.
- Greatly improved streams.
And a huge lot more!
P.S. The best: Development on PHP 5.1 can officially start now! ;)
|