On Fri, Jan 10, 2014 at 12:41 PM, Matthew Weier O'Phinney
<matt...@zend.com>wrote:

> The ServiceManager is far easier to configure, and much more
> performant (though, as with just about any generalized component,
> could be even better).
>
> If you are looking for an IoC container to manage DI for your various
> services/instances, I'd recommend Zend\ServiceManager instead of
> Zend\Di.
>

I was looking into that, but ran into a configuration snafu when I hit the
DB component: I couldn't figure out a way to Lazy load PDO (requires a DSN)
when the DSN is stored within the same file as the SM configuration. And SM
Configuration doesn't have a built-in "config" pass. All that stuff is
injected via Zend MVC, which I'm not using. DI doesn't really solve this
either, but using a Proxy class could work ... maybe.

My application is very simple: a single php tracking script. Reads in
visits, deciphers their cookies, and makes a call to a DB or Web Service
back end depending on parameters from their cookie.

The basic requirements are:
 - Speed
 - Parsing and managing incoming and outgoing cookies.
 - Ability to set content-type headers to either json or gif.
 - Log to directly to DB or Web Services (or neither), depending on cookie
parameters.

zend-http resolves a number of these: it gives me PhpEnv.\Request and
Response, as well as Http\Client for WS. My plan for DB was PDO directly
(using pdo_cassandra).

Now, I want this to be easily swappable for testability, and that's where I
ran into the trouble. Naturally, you'd think DI and a DiC; however, DiC is
notorious for not being speedy, unless configured (thus my config
question). In addition, it's not a lazy loader, something I was toying with
the idea of Proxy class for.

ServiceManager would resolve the swapability of RequestInterface and
ResponseInterface. But, I fell when it came to configuring for lazy
loading. PDO requires a DSN, which is stored within the same config as SM
values. And, I can't load PDO until I know "this request" is to be logged
to the DB. WS is slightly less tricky: it's not as overhead dependent, and
can be instantiated with no impact, and URL set at a later time.

---
Philip
g...@gpcentre.net
http://www.gpcentre.net/

Reply via email to