mirror of
https://github.com/php/php-src.git
synced 2024-09-22 02:17:32 +00:00
Fixed bug #62328 (implementing __toString and a cast to string fails)
__toString should has a high priority
This commit is contained in:
parent
d4f9bbfae2
commit
7b307fb930
2
NEWS
2
NEWS
@ -3,6 +3,8 @@ PHP NEWS
|
||||
?? ??? 2012, PHP 5.4.7
|
||||
|
||||
- Core:
|
||||
. Fixed bug #62328 (implementing __toString and a cast to string fails)
|
||||
(Laruence)
|
||||
. Fixed bug #62725 (Calling exit() in a shutdown function does not return
|
||||
the exit value). (Laruence)
|
||||
. Fixed bug #51363 (Fatal error raised by var_export() not caught by error
|
||||
|
@ -258,6 +258,9 @@ ZEND_API void zend_make_printable_zval(zval *expr, zval *expr_copy, int *use_cop
|
||||
{
|
||||
TSRMLS_FETCH();
|
||||
|
||||
if (zend_std_cast_object_tostring(expr, expr_copy, IS_STRING TSRMLS_CC) == SUCCESS) {
|
||||
break;
|
||||
}
|
||||
if (Z_OBJ_HANDLER_P(expr, cast_object)) {
|
||||
zval *val;
|
||||
|
||||
@ -270,12 +273,6 @@ ZEND_API void zend_make_printable_zval(zval *expr, zval *expr_copy, int *use_cop
|
||||
}
|
||||
zval_ptr_dtor(&val);
|
||||
}
|
||||
/* Standard PHP objects */
|
||||
if (Z_OBJ_HT_P(expr) == &std_object_handlers || !Z_OBJ_HANDLER_P(expr, cast_object)) {
|
||||
if (zend_std_cast_object_tostring(expr, expr_copy, IS_STRING TSRMLS_CC) == SUCCESS) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!Z_OBJ_HANDLER_P(expr, cast_object) && Z_OBJ_HANDLER_P(expr, get)) {
|
||||
zval *z = Z_OBJ_HANDLER_P(expr, get)(expr TSRMLS_CC);
|
||||
|
||||
|
21
ext/xml/tests/bug62328.phpt
Normal file
21
ext/xml/tests/bug62328.phpt
Normal file
@ -0,0 +1,21 @@
|
||||
--TEST--
|
||||
Bug #62328 (implementing __toString and a cast to string fails)
|
||||
--SKIPIF--
|
||||
<?php
|
||||
require_once("skipif.inc");
|
||||
?>
|
||||
--FILE--
|
||||
<?php
|
||||
class UberSimpleXML extends SimpleXMLElement {
|
||||
public function __toString() {
|
||||
return 'stringification';
|
||||
}
|
||||
}
|
||||
|
||||
$xml = new UberSimpleXML('<xml/>');
|
||||
|
||||
var_dump((string) $xml);
|
||||
var_dump($xml->__toString());
|
||||
--EXPECT--
|
||||
string(15) "stringification"
|
||||
string(15) "stringification"
|
Loading…
Reference in New Issue
Block a user