memcache(3) 1.2.0 released...
Sean Chittenden
sean at chittenden.org
Tue Jan 11 22:28:01 PST 2005
> So, I've been thinking about the wrapper more, and it seems there is
> a fundamental design decision I need to make right off. Should I...
>
> 1) Wrap the c api as closely as possible using procedural functions
> and return a resource id to the php programmer they need to track like
> the memcache struct in the c api. (kind of like the original php4.x
> and prior mysql api which very closely models the c api).
Yuk, please no. A C API should not be propagated as a function API to
a language that supports OOP. Heresy you shall have committed.
> or...
>
> 2) Wrap the c api into an object oriented archtecture to make it
> easier to use/more intuitive to php users.
Yes, please! This is how I did the Ruby API. I'm going to add a few
bits to the API to make it more loop friendly (in terms of the GC), but
I'd advise using an OOP API instead of a functional API. The C API is
rather OOP in its style and should be easy to port to an OOP friendly
language.
> The benefits I see of option #1, are that it keeps the two apis very
> close so if the c api changes it may be easier to update, and since I
> use the c api directly quite a bit, it means I don't have to remember
> two different apis.
That's true... but that's like voluntarily undergoing a lobotomy for
the fun of it... I'd say bite the bullet and use the OOP API. You'll
be happier in the long run... the Ruby API, for instance, has spoiled
me.
> The benefits I see on option #2, are that it may be more widely
> adopted and used by others. It may be easier for others to use, and
> finally if a change occurs in the c api it is not likely to directly
> affect the php api and I could update the module without having to
> break php end users code.
Yup.
> I'd like to get feedback from those on the list who have already
> commented in support of a wrapper module as to which direction they
> prefer to see it go.
Well, I'd prefer an OOP API, but to be honest, I haven't got much
feedback on my Ruby API beyond, "cool! What are your plans, are you
going to do this, that, etc.?"
> It's really a toss up for me, I'd be able to use it either way. Also,
> I'm stuck with php 4.x for the moment for most of my work, so my first
> desire will be to support it. Are most others using php 5.x or 4.x?
> I plan to support both, but I'd also like to get an idea of what
> others need most to start with.
OOP if possible, but if you're looking for maximum exposure (and more
work), provide both a functional API and an OOP API. I think the PHP
developers are borderline braindead in their API, but for historical
reasons, I know their reasons... I just wish they had a more pervasive
and firmer stance on providing upgrade paths and breaking with
backwards compatibility. PHP is going to be the next cobol. -sc
--
Sean Chittenden
More information about the memcached
mailing list