PHP NEWS
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
?? ??? 2004, PHP 5.1.0
-- Fixed bug #28985 (__getTypes() returning nothing on complex WSDL). (Dmitry)
+- Fixed bug #29311 (calling parent constructor in mysqli). (Georg)
- Fixed bug #29236 (memory error when wsdl-cache is enabled). (Dmitry)
- Fixed bug #29109 (SoapFault exception: [WSDL] Out of memory). (Dmitry)
- Fixed bug #29061 (soap extension segfaults). (Dmitry)
+- Fixed bug #28985 (__getTypes() returning nothing on complex WSDL). (Dmitry)
- Added new functions :
. array_diff_key() (Andrey)
. array_diff_ukey() (Andrey)
. stream_context_get_default() (Wez)
. stream_socket_enable_crypto() (Wez)
- PHP will now respect extension dependencies when initializing. (Wez)
+- Added Cursor support for MySQL 5.0.x in mysqli (Georg)
- Added MDTM support to ftp_url_stat. (Sara)
- Added zlib stream filter suport. (Sara)
- Added bz2 stream filter support. (Sara)
{
mysqli_object *obj = (mysqli_object *)zend_objects_get_address(object TSRMLS_CC);
- if (obj->zo.ce != mysqli_link_class_entry && obj->zo.ce->constructor) {
+ if (obj->zo.ce != mysqli_link_class_entry) {
return obj->zo.ce->constructor;
} else {
static zend_internal_function f;
/* for mysqli_stmt_set_attr */
REGISTER_LONG_CONSTANT("MYSQLI_STMT_ATTR_UPDATE_MAX_LENGTH", STMT_ATTR_UPDATE_MAX_LENGTH, CONST_CS | CONST_PERSISTENT);
+
+#ifdef STMT_ATTR_CURSOR_TYPE
+ REGISTER_LONG_CONSTANT("MYSQLI_STMT_ATTR_CURSOR_TYPE", STMT_ATTR_CURSOR_TYPE, CONST_CS | CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("MYSQLI_CURSOR_TYPE_NO_CURSOR", CURSOR_TYPE_NO_CURSOR, CONST_CS | CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("MYSQLI_CURSOR_TYPE_READ_ONLY", CURSOR_TYPE_READ_ONLY, CONST_CS | CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("MYSQLI_CURSOR_TYPE_FOR_UPDATE", CURSOR_TYPE_FOR_UPDATE, CONST_CS | CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("MYSQLI_CURSOR_TYPE_SCROLLABLE", CURSOR_TYPE_SCROLLABLE, CONST_CS | CONST_PERSISTENT);
+#endif
/* column information */
REGISTER_LONG_CONSTANT("MYSQLI_NOT_NULL_FLAG", NOT_NULL_FLAG, CONST_CS | CONST_PERSISTENT);
PHP_FALIAS(set_local_infile_handler,mysqli_set_local_infile_handler,NULL)
PHP_FALIAS(master_query,mysqli_master_query,NULL)
PHP_FALIAS(multi_query,mysqli_multi_query,NULL)
+ PHP_FALIAS(mysqli,mysqli_connect,NULL)
PHP_FALIAS(more_results,mysqli_more_results, NULL)
PHP_FALIAS(next_result, mysqli_next_result, NULL)
PHP_FALIAS(options,mysqli_options,NULL)
--- /dev/null
+--TEST--
+constructor test
+--FILE--
+<?php
+ include "connect.inc";
+
+ /* class 1 calls parent constructor */
+ class mysql1 extends mysqli {
+ function __construct() {
+ parent::__construct("localhost", "root", "", "test");
+ }
+ }
+
+ /* class 2 has an own constructor */
+ class mysql2 extends mysqli {
+
+ function __construct() {
+ $this->connect("localhost", "root", "", "test");
+ }
+ }
+
+ /* class 3 has no constructor */
+ class mysql3 extends mysqli {
+
+ }
+
+ $foo[0] = new mysql1();
+ $foo[1] = new mysql2();
+ $foo[2] = new mysql3("localhost", "root", "", "test");
+
+
+ for ($i=0; $i < 3; $i++) {
+ if (($result = $foo[$i]->query("SELECT DATABASE()"))) {
+ $row = $result->fetch_row();
+ printf("%d: %s\n", $i, $row[0]);
+ $result->close();
+ }
+ $foo[$i]->close();
+ }
+?>
+--EXPECTF--
+0: test
+1: test
+2: test