Thanks for the replies.

First, in response to Stefan...

> [EMAIL PROTECTED]:~$ php -r '$a = 2; $b = $a; debug_zval_dump($a);'
> long(2) refcount(3)
> [EMAIL PROTECTED]:~$ 

I missed that one.  Thanks!  With that I'd at least be
able to implement ref_count in php.

And then in response to Adam...
> > ============ (dis)allow_copies(mixed var) ============
> 
> What about implementing this directly in php?  You could use
> trigger_error in the constructor to stop the script from executing if
> the object is instantiated more than once.

I'll end up doing both.  I'll do what you've mentioned to
get an error from the following code:

$s1 = new Singleton();  // Constructor sets non-member var to true
$s2 = new Singleton();  // The constructor will fail

I need disallow_copies() also though in order to get an error
from the following code:

$s1 = new Singleton();  // constructor calls disallow_copies($this)
$s2 = $s1;  // With php4 I get a copy without any function call

or the following code:

function f($server) {   // Bug!  Should have been &$server
        ...
}
$s1 = new Singleton();  // constructor calls disallow_copies($this)
f($s1);  // With php4 I get a copy without any function call

Finding those bugs when you have tens of thousands of lines of
php can be a real headache.  That's why I'd very much like
a disallow_copies function.


Is anyone familiar with the extent of the uninitialized
struct issue I faced with the implemention I posted
yesterday?  

Thanks again,
Todd

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to