On Tue, 2007-03-20 at 11:52 +0100, Jochem Maas wrote:
> ok, I tried it in a whole number of variations -
> no joy.
>
> you should use php5 if you want this kind of reference
> stuff - in php5 it just works, php 4 will give you big headaches.
Now now, don't be calling PHP5 "ALL THAT" when it can't do it right
either (or did you not check it using PHP5 ;) ;) Everything works fine
in PHP4 (also for PHP5 in this case if you just understand that static
vars are buggy *lol* -- and this is first time I've noticed this bug).
Solution follows:
<?php
class B
{
function B( &$a )
{
$this->a = &$a;
}
function run()
{
echo $this->a->msg."\n";
}
}
class A
{
var $msg = null;
function A()
{
$this->b = &new B( $this );
}
function &getInstance()
{
static $inst = array();
if( !isset( $inst['staticIsBuggy'] ) )
{
$inst['staticIsBuggy'] = &new A();
}
return $inst['staticIsBuggy'];
}
function run()
{
$this->b->run();
}
}
$a = &A::getInstance();
$a->msg = "Hello world !";
// Some tasks, flow control, scope changes, ...
$a = &A::getInstance();
print "{$a->msg}\n"; // This should print "Hello world !"
$a->run(); // This should print "Hello world !"
?>
Cheers,
Rob.
--
.------------------------------------------------------------.
| InterJinn Application Framework - http://www.interjinn.com |
:------------------------------------------------------------:
| An application and templating framework for PHP. Boasting |
| a powerful, scalable system for accessing system services |
| such as forms, properties, sessions, and caches. InterJinn |
| also provides an extremely flexible architecture for |
| creating re-usable components quickly and easily. |
`------------------------------------------------------------'
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php