Can you please try again (HEAD)?
Let me know if it's OK and I'll merge to PHP_5_0

Andi

At 05:51 PM 9/5/2004 +0000, Curt Zirzow wrote:
* 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

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



Reply via email to