[...] my second attempt was to create a singleton, but the problem
is that my model needs configuration data in order to be
instantiated correctly. So whenever I would call the getInstance
(...) method I need to have the model's configuration data
available as I can't always be sure that the getInstance method has
been called before and an instance of the model class already exists.
[...] I wanted to create a Registry class, add my model to it and
access it from whatever method I want. This however makes unit
testing harder and has all the site effects which global variables
have.
Sounds like you might find some answers in reading about Dependency
Injection. I've come across this recently, and it's helped my
thinking around some of these issues. http://www.martinfowler.com/
articles/injection.html I think the key here is the concept of the
"container". It's like a class configuration registry.
There was also a good article about Dependency Injection in a recent
php|architect issue:
http://www.phparch.com/issue.php?mid=82
The idea of implementing a generic container seemed a little overkill
for most of what I was doing. I've found myself using static methods
to configure a class (rather than a singleton), and I place my
configuration code in a bootstrap file. For example, the bootstrap
file might look something like:
require_once 'Proj/SomeModel.php';
Proj_SomeModel::configure(array(
'option1' => 'some value',
'option2' => 'another value',
));
The boostrap could either be a global one, or one that could be
required only when I knew I was going to work with the model. The
model object would then access these static config values within the
constructor when instantiating itself. Using a model becomes a simple
as:
require_once 'model-bootstrap.php';
$model = new Proj_SomeModel();
Don't know if this is helpful, or just rehashing things you've
already tried. Care to share more details about what you've tried so
far?
-- Dell
_______________________________________________
New York PHP Community Talk Mailing List
http://lists.nyphp.org/mailman/listinfo/talk
NYPHPCon 2006 Presentations Online
http://www.nyphpcon.com
Show Your Participation in New York PHP
http://www.nyphp.org/show_participation.php