>> but this should not be the only way. What I mean is:
>>
>> static public function put($key, $value) {
>> $me = self::getInstance();
>> $me[$key] = $value;
>> }
>
> That sounds fine to me. As long as it's not called register() and
> registry()!
>
> I have updated the proposal page. But it has to work statically and
> dynamically, so I made $me set either to $this or self::getInstance().
if (isset($this)) {
$instance = $this;
} else {
$instance = self::getInstance();
}
Which would be great, but it doesn't work.
class Registry
{
function get()
{
if (isset($this)) {
print '$this is defined (' . get_class($this) . ')<br />';
} else {
print '$this is not defined<br />';
}
}
}
class IndexController
{
function indexAction()
{
Registry::get();
$registry = new Registry();
$registry->get();
}
}
$index = new IndexController();
$index->indexAction();
// Outputs:
$this is defined (IndexController)
$this is defined (Registry)
You could check the class name in Registry, but either way it's going to
give you an E_STRICT error. Methods cannot be called in both static and
object contexts in PHP if they refer to $this at any time.
-Matt