* 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

Reply via email to