* Thus wrote Andi Gutmans:
> At 03:46 AM 9/4/2004 +0000, Curt Zirzow wrote:
> >
> >What are the possibilities of thrown E_STRICT or E_WARNING, since
> >the object gets lost? Or should this simply be a documented
> >behaviour? If possible, any pointers where to consider applying them
> >at?
>
> Didn't quite understand. Why does the object get lost after my fix?
It was getting lost in the call to preg_match, prior to the patch.
>
> >>From what I've seen there are a lot of convert_to_xxx_ex()'s around
> >and can cause a some of unexpected results, without some sort of
> >notice. Of course ideally, an attempt to fetch a __toString()
> >value would be really nice :) I'm way over my head at this point.
>
> convert_to_xx_ex() does not destroy any values (except if they are by
> reference).
Correct. I might be wrong on blaming it on convert_to_xx_ex(), but
there definately is something wrong when passing builtin classes
to certain functions, user defined classes behave differently:
<?php
class o {
function __toString() {
return 'a string';
}
}
echo "User class:\n";
$o = new o();
preg_match('/x/', $o); /* warning issued: expected string */
var_dump($o); /* object(0) #1 */
echo "\nDirectory Iterator:\n";
$d = new DirectoryIterator('.');
preg_match('/x/', $d); /* no warning */
var_dump($d); /* string(1) "." */
echo "\nTidy:\n";
$t = new Tidy();
preg_match('/x/', $t); /* no warning */
var_dump($t); /* string(1) "\n" */
Curt
--
First, let me assure you that this is not one of those shady pyramid schemes
you've been hearing about. No, sir. Our model is the trapezoid!
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php