Wednesday, December 31. 2008
That time of year again -- wrap-up time. Each year, it seems like it's the
busiest ever, and I often wonder if it will ever slow down. As usual, I'm
restricting myself to primarily professional activities out of respect for
the privacy of my family.
The short, executive summary:
- One trip to Israel
- One trip to The Netherlands
- One trip to California's Bay Area
- One trip to Atlanta, GA
- Three minor releases of Zend Framework
- Seven webinars, six for zend.com and one for Adobe
- Three conferences attended as a speaker, including:
- One six-hour workshop
- One three-hour tutorial (as a co-presenter)
- Four regular sessions
- Two panel sessions (one scheduled, one for an uncon)
- Two uncon sessions (one as a co-presenter)
- One foul-mouthed Pecha Kucha talk
- Ten Burlington, VT PHP User's Group meetings attended; I spoke at
many
- One Bug Hunt week organized
- Two books reviewed as a technical editor
- Six articles for DevZone
- 50 blog entries (including this one)
Read on for the gruesome, month-by-month breakdown.
Continue reading "2008: The year in review"
Tuesday, December 30. 2008
In the last two entries in this series on models, I covered
using forms as input filters
and integrating ACLs into models.
In this entry, I tackle some potential infrastructure for your models.
The Model is a complex subject. However, it is often boiled down to either a
single model class or a full object relational mapping (ORM). I personally
have never been much of a fan of ORMs as they tie models to the underlying
database structure; I don't always use a database, nor do I want
to rely on an ORM solution too heavily on the off-chance that I later need
to refactor to use services or another type of persistence store. On the
other hand, the model as a single class is typically too simplistic.
Continue reading "Model Infrastructure"
Wednesday, December 24. 2008
In my last post, I discussed using Zend_Form as a combination input filter/value object within your models.
In this post, I'll discuss using Access Control Lists (ACLs) as part of your
modelling strategy.
ACLs are used to indicate who has access to do what
on a given resource. In the paradigm I will put forward, your
resource is your model, and the what are the various
methods of the model. If you finesse a bit, you'll have "user" objects that
act as your who.
Just like with forms, you want to put your ACLs as close to your domain
logic as possible; in fact, ACLs are part of your domain.
Continue reading "Applying ACLs to Models"
Monday, December 22. 2008
A number
of blog
posts
have sprung up lately in the Zend Framework community discussing the Model
in the Model-View-Controller pattern.
Zend Framework has never had a
concrete Model class or interface; our stand has been that models are
specific to the application, and only the developer can really know what
would best suit it.
Many other frameworks tie the Model to data access -- typically via the
ActiveRecord
pattern or a Table Data Gateway
-- which completely ignores the fact that this is tying the Model to the
method by which it is persisted. What happens later if you start using
memcached? or migrate to an SOA architecture? What if, from the very
beginning, your data is coming from a web service? What if you do
use a database, but your business logic relies on associations
between tables?
While the aforementioned posts do an admirable job of discussing the various
issues, they don't necessarily give any concrete approaches a developer
can use when creating their models. As such, this will be the first
in a series of posts aiming to provide some concrete patterns and techniques
you can use when creating your models. The examples will primarily be
drawing from Zend Framework components, but should apply equally well to a
variety of other frameworks.
Continue reading "Using Zend_Form in Your Models"
Monday, December 15. 2008
I've been playing a lot with Dojo
lately, and have been very impressed by its elegant publish-subscribe
system. Basically, any object can publish an event, and any other object can
subscribe to it. This creates an incredibly flexible notification
architecture that's completely opt-in.
The system has elements of Aspect Oriented Programming (AOP), as well as the
Observer pattern. Its power, however, is in the fact that an individual
object does not need to implement any specific interface in order to act as
either a Subject or an Observer; the system is globally available.
Being a developer who recognizes good ideas when he sees them, of course I
decided to port the idea to PHP. You can see the results on github.
Continue reading "A Simple PHP Publish-Subscribe System"
Friday, December 12. 2008
I've fielded several questions about setting up an autocompleter with
Zend Framework and
Dojo, and decided it was time to
create a HOWTO on the subject, particularly as there are some nuances you
need to pay attention to.
Continue reading "Autocompletion with Zend Framework and Dojo"
Wednesday, December 10. 2008
I've been using IRC regularly for the past six to nine months, in large part
due to the growing ZF community on the
Freenode #zftalk channel (unfortunately,
I simply don't have time to be in that particular channel any more, but you
can generally find me in #zftalk.dev), but also to keep in contact with
other peers, friends, and colleagues.
One difficulty, however, is keeping productivity high while staying on IRC.
To me, the ultimate client would provide me notifications when somebody
mentions my name or a watch word - allowing me to read the channel at my
leisure, yet still respond to people in a timely fashion.
Continue reading "Mumbles irssi integration"
Tuesday, December 2. 2008
Just about every day, I have an idea for a blog post, and most days, by the
end of the day, I just don't have the time or energy to actually write
anything up. The inner writer in me screams, "no excuses!" while the aging
adult in me whispers, "time for bed, dear."
So, to keep my hand in the game, here are a few things running through my
head, or that I'm working on, or that I'll be doing soon.
Continue reading "Tidings of the Season"
|
|