[PHP-CVS] svn: /php/php-src/ branches/PHP_5_4/NEWS branches/PHP_5_4/ext/reflection/php_reflection.c branches/PHP_5_4/ext/reflection/tests/ReflectionClass_newInstanceWithoutConstructor.phpt branches/PH
sebastianFri, 26 Aug 2011 07:40:31 + Revision: http://svn.php.net/viewvc?view=revisionrevision=315538 Log: Close #55490. Bug: https://bugs.php.net/55490 (Open) Allow instantiating objects without invoking the constructor Changed paths: U php/php-src/branches/PHP_5_4/NEWS U php/php-src/branches/PHP_5_4/ext/reflection/php_reflection.c A php/php-src/branches/PHP_5_4/ext/reflection/tests/ReflectionClass_newInstanceWithoutConstructor.phpt U php/php-src/branches/PHP_5_4/ext/reflection/tests/ReflectionClass_toString_001.phpt U php/php-src/trunk/ext/reflection/php_reflection.c A php/php-src/trunk/ext/reflection/tests/ReflectionClass_newInstanceWithoutConstructor.phpt U php/php-src/trunk/ext/reflection/tests/ReflectionClass_toString_001.phpt Modified: php/php-src/branches/PHP_5_4/NEWS === --- php/php-src/branches/PHP_5_4/NEWS 2011-08-26 07:34:58 UTC (rev 315537) +++ php/php-src/branches/PHP_5_4/NEWS 2011-08-26 07:40:31 UTC (rev 315538) @@ -23,6 +23,10 @@ - Improved NSAPI SAPI: (Uwe Schindler) . Don't set $_SERVER['HTTPS'] on unsecure connection (bug #55403). +- Improved Reflection extension: + . Added ReflectionClass::newInstanceWithoutConstructor() to create a new +instance of a class without invoking its constructor. FR #55490. (Sebastian) + 04 Aug 2011, PHP 5.4.0 Alpha 3 - Added features: . Short array syntax, see UPGRADING guide for full details (rsky0711 at gmail Modified: php/php-src/branches/PHP_5_4/ext/reflection/php_reflection.c === --- php/php-src/branches/PHP_5_4/ext/reflection/php_reflection.c 2011-08-26 07:34:58 UTC (rev 315537) +++ php/php-src/branches/PHP_5_4/ext/reflection/php_reflection.c 2011-08-26 07:40:31 UTC (rev 315538) @@ -4129,6 +4129,25 @@ } /* }}} */ +/* {{{ proto public stdclass ReflectionClass::newInstanceWithoutConstructor() + Returns an instance of this class without invoking its constructor */ +ZEND_METHOD(reflection_class, newInstanceWithoutConstructor) +{ + zval *retval_ptr = NULL; + reflection_object *intern; + zend_class_entry *ce; + + METHOD_NOTSTATIC(reflection_class_ptr); + GET_REFLECTION_OBJECT_PTR(ce); + + if (ce-create_object != NULL) { + zend_throw_exception_ex(reflection_exception_ptr, 0 TSRMLS_CC, Class %s is an internal class that cannot be instantiated without invoking its constructor, ce-name); + } + + object_init_ex(return_value, ce); +} +/* }}} */ + /* {{{ proto public stdclass ReflectionClass::newInstanceArgs([array args]) Returns an instance of this class */ ZEND_METHOD(reflection_class, newInstanceArgs) @@ -5694,6 +5713,9 @@ ZEND_ARG_INFO(0, args) ZEND_END_ARG_INFO() +ZEND_BEGIN_ARG_INFO(arginfo_reflection_class_newInstanceWithoutConstructor, 0) +ZEND_END_ARG_INFO() + ZEND_BEGIN_ARG_INFO_EX(arginfo_reflection_class_newInstanceArgs, 0, 0, 0) ZEND_ARG_ARRAY_INFO(0, args, 0) ZEND_END_ARG_INFO() @@ -5742,6 +5764,7 @@ ZEND_ME(reflection_class, getModifiers, arginfo_reflection__void, 0) ZEND_ME(reflection_class, isInstance, arginfo_reflection_class_isInstance, 0) ZEND_ME(reflection_class, newInstance, arginfo_reflection_class_newInstance, 0) + ZEND_ME(reflection_class, newInstanceWithoutConstructor, arginfo_reflection_class_newInstanceWithoutConstructor, 0) ZEND_ME(reflection_class, newInstanceArgs, arginfo_reflection_class_newInstanceArgs, 0) ZEND_ME(reflection_class, getParentClass, arginfo_reflection__void, 0) ZEND_ME(reflection_class, isSubclassOf, arginfo_reflection_class_isSubclassOf, 0) Added: php/php-src/branches/PHP_5_4/ext/reflection/tests/ReflectionClass_newInstanceWithoutConstructor.phpt === --- php/php-src/branches/PHP_5_4/ext/reflection/tests/ReflectionClass_newInstanceWithoutConstructor.phpt (rev 0) +++ php/php-src/branches/PHP_5_4/ext/reflection/tests/ReflectionClass_newInstanceWithoutConstructor.phpt 2011-08-26 07:40:31 UTC (rev 315538) @@ -0,0 +1,33 @@ +--TEST-- +ReflectionClass::newInstanceWithoutConstructor() +--CREDITS-- +Sebastian Bergmann sebast...@php.net +--FILE-- +?php +class Foo +{ +public function __construct() +{ +print __METHOD__; +} +} + +$class = new ReflectionClass('Foo'); +var_dump($class-newInstanceWithoutConstructor()); + +$class = new ReflectionClass('StdClass'); +var_dump($class-newInstanceWithoutConstructor()); + +$class = new ReflectionClass('DateTime'); +var_dump($class-newInstanceWithoutConstructor()); +--EXPECTF-- +object(Foo)#%d (0) { +} +object(stdClass)#%d (0) { +} + +Fatal error: Uncaught exception 'ReflectionException' with message 'Class DateTime is an internal class that cannot be instantiated without invoking its constructor' in %s/tests/ReflectionClass_newInstanceWithoutConstructor.php:%d +Stack trace: +#0
[PHP-CVS] svn: /php/php-src/ branches/PHP_5_3/ext/mysqlnd/mysqlnd.c branches/PHP_5_4/ext/mysqlnd/mysqlnd.c trunk/ext/mysqlnd/mysqlnd.c
andrey Fri, 26 Aug 2011 12:14:31 + Revision: http://svn.php.net/viewvc?view=revisionrevision=315549 Log: fix valgrind warnings in debug builds Changed paths: U php/php-src/branches/PHP_5_3/ext/mysqlnd/mysqlnd.c U php/php-src/branches/PHP_5_4/ext/mysqlnd/mysqlnd.c U php/php-src/trunk/ext/mysqlnd/mysqlnd.c Modified: php/php-src/branches/PHP_5_3/ext/mysqlnd/mysqlnd.c === --- php/php-src/branches/PHP_5_3/ext/mysqlnd/mysqlnd.c 2011-08-26 11:34:18 UTC (rev 315548) +++ php/php-src/branches/PHP_5_3/ext/mysqlnd/mysqlnd.c 2011-08-26 12:14:31 UTC (rev 315549) @@ -1407,7 +1407,7 @@ char buff[4]; DBG_ENTER(mysqlnd_conn::kill); - DBG_INF_FMT(conn=%llu pid=%lu, conn-thread_id, pid); + DBG_INF_FMT(conn=%llu pid=%u, conn-thread_id, pid); int4store(buff, pid); Modified: php/php-src/branches/PHP_5_4/ext/mysqlnd/mysqlnd.c === --- php/php-src/branches/PHP_5_4/ext/mysqlnd/mysqlnd.c 2011-08-26 11:34:18 UTC (rev 315548) +++ php/php-src/branches/PHP_5_4/ext/mysqlnd/mysqlnd.c 2011-08-26 12:14:31 UTC (rev 315549) @@ -1523,7 +1523,7 @@ zend_uchar buff[4]; DBG_ENTER(mysqlnd_conn::kill); - DBG_INF_FMT(conn=%llu pid=%lu, conn-thread_id, pid); + DBG_INF_FMT(conn=%llu pid=%u, conn-thread_id, pid); int4store(buff, pid); Modified: php/php-src/trunk/ext/mysqlnd/mysqlnd.c === --- php/php-src/trunk/ext/mysqlnd/mysqlnd.c 2011-08-26 11:34:18 UTC (rev 315548) +++ php/php-src/trunk/ext/mysqlnd/mysqlnd.c 2011-08-26 12:14:31 UTC (rev 315549) @@ -1523,7 +1523,7 @@ zend_uchar buff[4]; DBG_ENTER(mysqlnd_conn::kill); - DBG_INF_FMT(conn=%llu pid=%lu, conn-thread_id, pid); + DBG_INF_FMT(conn=%llu pid=%u, conn-thread_id, pid); int4store(buff, pid); -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] svn: /php/php-src/trunk/ext/mbstring/libmbfl/filters/ mbfilter_sjis_mobile.h mbfilter_utf8_mobile.c
hirokawa Sat, 27 Aug 2011 00:07:20 + Revision: http://svn.php.net/viewvc?view=revisionrevision=315589 Log: update pua conversion tables. Changed paths: U php/php-src/trunk/ext/mbstring/libmbfl/filters/mbfilter_sjis_mobile.h U php/php-src/trunk/ext/mbstring/libmbfl/filters/mbfilter_utf8_mobile.c Modified: php/php-src/trunk/ext/mbstring/libmbfl/filters/mbfilter_sjis_mobile.h === --- php/php-src/trunk/ext/mbstring/libmbfl/filters/mbfilter_sjis_mobile.h 2011-08-26 23:57:48 UTC (rev 315588) +++ php/php-src/trunk/ext/mbstring/libmbfl/filters/mbfilter_sjis_mobile.h 2011-08-27 00:07:20 UTC (rev 315589) @@ -47,6 +47,11 @@ extern const struct mbfl_convert_vtbl vtbl_sjis_sb_wchar; extern const struct mbfl_convert_vtbl vtbl_wchar_sjis_sb; +extern const unsigned short mbfl_docomo2uni_pua[4][3]; +extern const unsigned short mbfl_kddi2uni_pua[6][3]; +extern const unsigned short mbfl_sb2uni_pua[6][3]; +extern const unsigned short mbfl_kddi2uni_pua_b[8][3]; + int mbfl_filt_conv_sjis_mobile_wchar(int c, mbfl_convert_filter *filter); int mbfl_filt_conv_wchar_sjis_mobile(int c, mbfl_convert_filter *filter); int mbfl_filt_conv_sjis_mobile_flush(mbfl_convert_filter *filter); Modified: php/php-src/trunk/ext/mbstring/libmbfl/filters/mbfilter_utf8_mobile.c === --- php/php-src/trunk/ext/mbstring/libmbfl/filters/mbfilter_utf8_mobile.c 2011-08-26 23:57:48 UTC (rev 315588) +++ php/php-src/trunk/ext/mbstring/libmbfl/filters/mbfilter_utf8_mobile.c 2011-08-27 00:07:20 UTC (rev 315589) @@ -37,10 +37,6 @@ #include mbfilter_sjis_mobile.h extern int mbfl_filt_ident_utf8(int c, mbfl_identify_filter *filter); -extern const int mbfl_docomo2uni_pua[4][3]; -extern const int mbfl_kddi2uni_pua[6][3]; -extern const int mbfl_sb2uni_pua[6][3]; -extern const int mbfl_kddi2uni_pua_b[8][3]; extern const unsigned char mblen_table_utf8[]; -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] svn: /php/php-src/branches/PHP_5_4/ext/mbstring/libmbfl/filters/ mbfilter_sjis_mobile.h mbfilter_utf8_mobile.c
hirokawa Sat, 27 Aug 2011 00:08:02 + Revision: http://svn.php.net/viewvc?view=revisionrevision=315590 Log: MFH: update pua conversion tables. Changed paths: U php/php-src/branches/PHP_5_4/ext/mbstring/libmbfl/filters/mbfilter_sjis_mobile.h U php/php-src/branches/PHP_5_4/ext/mbstring/libmbfl/filters/mbfilter_utf8_mobile.c Modified: php/php-src/branches/PHP_5_4/ext/mbstring/libmbfl/filters/mbfilter_sjis_mobile.h === --- php/php-src/branches/PHP_5_4/ext/mbstring/libmbfl/filters/mbfilter_sjis_mobile.h 2011-08-27 00:07:20 UTC (rev 315589) +++ php/php-src/branches/PHP_5_4/ext/mbstring/libmbfl/filters/mbfilter_sjis_mobile.h 2011-08-27 00:08:02 UTC (rev 315590) @@ -47,6 +47,11 @@ extern const struct mbfl_convert_vtbl vtbl_sjis_sb_wchar; extern const struct mbfl_convert_vtbl vtbl_wchar_sjis_sb; +extern const unsigned short mbfl_docomo2uni_pua[4][3]; +extern const unsigned short mbfl_kddi2uni_pua[6][3]; +extern const unsigned short mbfl_sb2uni_pua[6][3]; +extern const unsigned short mbfl_kddi2uni_pua_b[8][3]; + int mbfl_filt_conv_sjis_mobile_wchar(int c, mbfl_convert_filter *filter); int mbfl_filt_conv_wchar_sjis_mobile(int c, mbfl_convert_filter *filter); int mbfl_filt_conv_sjis_mobile_flush(mbfl_convert_filter *filter); Modified: php/php-src/branches/PHP_5_4/ext/mbstring/libmbfl/filters/mbfilter_utf8_mobile.c === --- php/php-src/branches/PHP_5_4/ext/mbstring/libmbfl/filters/mbfilter_utf8_mobile.c 2011-08-27 00:07:20 UTC (rev 315589) +++ php/php-src/branches/PHP_5_4/ext/mbstring/libmbfl/filters/mbfilter_utf8_mobile.c 2011-08-27 00:08:02 UTC (rev 315590) @@ -37,10 +37,6 @@ #include mbfilter_sjis_mobile.h extern int mbfl_filt_ident_utf8(int c, mbfl_identify_filter *filter); -extern const int mbfl_docomo2uni_pua[4][3]; -extern const int mbfl_kddi2uni_pua[6][3]; -extern const int mbfl_sb2uni_pua[6][3]; -extern const int mbfl_kddi2uni_pua_b[8][3]; extern const unsigned char mblen_table_utf8[]; -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] svn: /php/php-src/trunk/ext/mbstring/libmbfl/filters/ mbfilter_utf8.c mbfilter_utf8_mobile.c
hirokawa Sat, 27 Aug 2011 01:25:10 + Revision: http://svn.php.net/viewvc?view=revisionrevision=315598 Log: corrected valid unicode area. Changed paths: U php/php-src/trunk/ext/mbstring/libmbfl/filters/mbfilter_utf8.c U php/php-src/trunk/ext/mbstring/libmbfl/filters/mbfilter_utf8_mobile.c Modified: php/php-src/trunk/ext/mbstring/libmbfl/filters/mbfilter_utf8.c === --- php/php-src/trunk/ext/mbstring/libmbfl/filters/mbfilter_utf8.c 2011-08-27 01:23:12 UTC (rev 315597) +++ php/php-src/trunk/ext/mbstring/libmbfl/filters/mbfilter_utf8.c 2011-08-27 01:25:10 UTC (rev 315598) @@ -116,7 +116,7 @@ filter-cache = 0; if ((status == 0x10 s = 0x80) || (status == 0x21 s = 0x800 (s 0xd800 || s 0xdfff)) || - (status == 0x32 s = 0x1 s 0x20)) { + (status == 0x32 s = 0x1 s 0x11)) { CK((*filter-output_function)(s, filter-data)); } else { w = s MBFL_WCSGROUP_MASK; Modified: php/php-src/trunk/ext/mbstring/libmbfl/filters/mbfilter_utf8_mobile.c === --- php/php-src/trunk/ext/mbstring/libmbfl/filters/mbfilter_utf8_mobile.c 2011-08-27 01:23:12 UTC (rev 315597) +++ php/php-src/trunk/ext/mbstring/libmbfl/filters/mbfilter_utf8_mobile.c 2011-08-27 01:25:10 UTC (rev 315598) @@ -207,7 +207,7 @@ filter-cache = 0; if ((status == 0x10 s = 0x80) || (status == 0x21 s = 0x800 (s 0xd800 || s 0xdfff)) || - (status == 0x32 s = 0x1 s 0x20)) { + (status == 0x32 s = 0x1 s 0x11)) { if (filter-from-no_encoding == mbfl_no_encoding_utf8_docomo mbfilter_conv_r_map_tbl(s, s1, mbfl_docomo2uni_pua, 4) 0) { -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] svn: /php/php-src/branches/PHP_5_4/ext/mbstring/libmbfl/filters/ mbfilter_utf8.c mbfilter_utf8_mobile.c
hirokawa Sat, 27 Aug 2011 01:25:24 + Revision: http://svn.php.net/viewvc?view=revisionrevision=315599 Log: MFH: corrected valid unicode area. Changed paths: U php/php-src/branches/PHP_5_4/ext/mbstring/libmbfl/filters/mbfilter_utf8.c U php/php-src/branches/PHP_5_4/ext/mbstring/libmbfl/filters/mbfilter_utf8_mobile.c Modified: php/php-src/branches/PHP_5_4/ext/mbstring/libmbfl/filters/mbfilter_utf8.c === --- php/php-src/branches/PHP_5_4/ext/mbstring/libmbfl/filters/mbfilter_utf8.c 2011-08-27 01:25:10 UTC (rev 315598) +++ php/php-src/branches/PHP_5_4/ext/mbstring/libmbfl/filters/mbfilter_utf8.c 2011-08-27 01:25:24 UTC (rev 315599) @@ -116,7 +116,7 @@ filter-cache = 0; if ((status == 0x10 s = 0x80) || (status == 0x21 s = 0x800 (s 0xd800 || s 0xdfff)) || - (status == 0x32 s = 0x1 s 0x20)) { + (status == 0x32 s = 0x1 s 0x11)) { CK((*filter-output_function)(s, filter-data)); } else { w = s MBFL_WCSGROUP_MASK; Modified: php/php-src/branches/PHP_5_4/ext/mbstring/libmbfl/filters/mbfilter_utf8_mobile.c === --- php/php-src/branches/PHP_5_4/ext/mbstring/libmbfl/filters/mbfilter_utf8_mobile.c 2011-08-27 01:25:10 UTC (rev 315598) +++ php/php-src/branches/PHP_5_4/ext/mbstring/libmbfl/filters/mbfilter_utf8_mobile.c 2011-08-27 01:25:24 UTC (rev 315599) @@ -207,7 +207,7 @@ filter-cache = 0; if ((status == 0x10 s = 0x80) || (status == 0x21 s = 0x800 (s 0xd800 || s 0xdfff)) || - (status == 0x32 s = 0x1 s 0x20)) { + (status == 0x32 s = 0x1 s 0x11)) { if (filter-from-no_encoding == mbfl_no_encoding_utf8_docomo mbfilter_conv_r_map_tbl(s, s1, mbfl_docomo2uni_pua, 4) 0) { -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php