FALVEY MEMORIAL LIBRARY

You are exploring: VU > Library > Blogs > Library Technology Development > Moving VuFind to Zend Framework 2: Part 1 – Orientation

Moving VuFind to Zend Framework 2: Part 1 – Orientation

As you may already know, I’ve been hard at work on updating VuFind‘s architecture in preparation for the forthcoming 2.0 release. The Why VuFind 2.0? page in the wiki describes some of the reasons for this change. So far, I have been extremely happy with the improvements I have been able to make. I feel that the code is now more concise and readable while offering broader and more consistent features. An alpha release is on schedule for early July.

Of course, life with software is never simple. A key decision of the redesign was to use Zend Framework as VuFind’s foundation, on the theory that a widely-used, well-understood, well-documented framework would make the codebase more accessible and standards-driven. I still think this is a wise choice. However, the timing is unfortunate, because the Zend Framework community is just about to release version 2.0 of their software, which breaks backward compatibility in the name of progress. VuFind 2.0 has so far been built on Zend Framework 1.x. Since I don’t want the official finished release of VuFind 2.0 to be built on deprecated architecture, I have some work to do.

I will still release the ZF1-based 2.0alpha in July. It provides a working demonstration of how VuFind 2.0 will look from the outside. However, I hope to follow that as quickly as I can with a ZF2-based 2.0beta so that the final shape of VuFind’s new architecture will also be available for testing.

The problem with moving from ZF1 to ZF2 is that the new version is still under active development (although it’s getting pretty close to stability by now) and the documentation is still fairly incomplete. There is no simple “translate this to that” guide for moving from ZF1. There are also some new techniques (namespaces and dependency injection, with a touch of event-driven programming) that need to be digested in order to understand the new framework. In all, it’s a bit intimidating.

Thus this series of blog posts: as I work through problems, I’ll try to write about them here in case anyone else is struggling with the same things. For now I’m just providing a little background; things should get more interesting once I get deeper into the code. If you want to learn more, check out the resource links on the ZF1 vs. ZF2 page in the VuFind wiki. The Zend webinars in particular are a really helpful way to start learning about what’s going on in the new framework, whether or not you are familiar with ZF1 — I recommend watching a few if you want to be prepared for what’s coming.

Now I’d better get back to digging into code — wish me luck!

Like

2 Comments »

  1. Comment by Surjit — January 13, 2013 @ 4:00 am

    how to get current controller name in module.php onBootstrap function

  2. Comment by dkatz — January 14, 2013 @ 9:19 am

    When the module.php onBootstrap function is called, the framework has not yet determined the current controller. This occurs during the route event, which triggers after bootstrap. What you need to do in onBootstrap() is set up a new event which will trigger later after the information is known — either a very late route event or a very early dispatch event.

    While it is not exactly what you need, you might find it helpful to look at VuFind’s Bootstrap class, which gets called through the module’s onBootstrap method and sets up a number of things:

    http://vufind.git.sourceforge.net/git/gitweb.cgi?p=vufind/vufind;a=blob;f=module/VuFind/src/VuFind/Bootstrap.php;h=d105e92959510a716505171efd4a27abd24bcc6e;hb=HEAD

    If you have further questions, I recommend going to the ZF IRC channel:

    http://www.zftalk.com/

    …or trying their mailing lists:

    http://framework.zend.com/archives/subscribe/

    In both of these places you should find some people with more experience in using the Framework.

RSS feed for comments on this post. TrackBack URI

Leave a comment

*

 


Last Modified: June 20, 2012