|
44 | 44 |
|
45 | 45 | PHONGO_API zend_class_entry *php_phongo_writeconcernerror_ce;
|
46 | 46 |
|
| 47 | +zend_object_handlers php_phongo_handler_writeconcernerror; |
| 48 | + |
47 | 49 | /* {{{ proto integer WriteConcernError::getCode()
|
48 | 50 | Returns the MongoDB error code */
|
49 | 51 | PHP_METHOD(WriteConcernError, getCode)
|
@@ -156,32 +158,51 @@ static void php_phongo_writeconcernerror_free_object(void *object TSRMLS_DC) /*
|
156 | 158 | zend_object_value php_phongo_writeconcernerror_create_object(zend_class_entry *class_type TSRMLS_DC) /* {{{ */
|
157 | 159 | {
|
158 | 160 | zend_object_value retval;
|
159 |
| - php_phongo_writeconcernerror_t *intern; |
| 161 | + php_phongo_writeconcernerror_t *intern = NULL; |
160 | 162 |
|
161 |
| - intern = (php_phongo_writeconcernerror_t *)emalloc(sizeof(php_phongo_writeconcernerror_t)); |
162 |
| - memset(intern, 0, sizeof(php_phongo_writeconcernerror_t)); |
| 163 | + intern = (php_phongo_writeconcernerror_t *)ecalloc(1, sizeof *intern); |
163 | 164 |
|
164 | 165 | zend_object_std_init(&intern->std, class_type TSRMLS_CC);
|
165 | 166 | object_properties_init(&intern->std, class_type);
|
166 | 167 |
|
167 | 168 | retval.handle = zend_objects_store_put(intern, (zend_objects_store_dtor_t) zend_objects_destroy_object, php_phongo_writeconcernerror_free_object, NULL TSRMLS_CC);
|
168 |
| - retval.handlers = phongo_get_std_object_handlers(); |
| 169 | + retval.handlers = &php_phongo_handler_writeconcernerror; |
169 | 170 |
|
170 | 171 | return retval;
|
171 | 172 | } /* }}} */
|
| 173 | + |
| 174 | +HashTable *php_phongo_writeconcernerror_get_debug_info(zval *object, int *is_temp TSRMLS_DC) /* {{{ */ |
| 175 | +{ |
| 176 | + php_phongo_writeconcernerror_t *intern; |
| 177 | + zval retval = zval_used_for_init; |
| 178 | + |
| 179 | + |
| 180 | + *is_temp = 1; |
| 181 | + intern = (php_phongo_writeconcernerror_t *)zend_object_store_get_object(object TSRMLS_CC); |
| 182 | + |
| 183 | + array_init_size(&retval, 3); |
| 184 | + add_assoc_string_ex(&retval, ZEND_STRS("message"), intern->message, 1); |
| 185 | + add_assoc_long_ex(&retval, ZEND_STRS("code"), intern->code); |
| 186 | + Z_ADDREF_P(intern->info); |
| 187 | + add_assoc_zval_ex(&retval, ZEND_STRS("info"), intern->info); |
| 188 | + |
| 189 | + return Z_ARRVAL(retval); |
| 190 | +} /* }}} */ |
172 | 191 | /* }}} */
|
173 | 192 |
|
174 | 193 | /* {{{ PHP_MINIT_FUNCTION */
|
175 | 194 | PHP_MINIT_FUNCTION(WriteConcernError)
|
176 | 195 | {
|
177 |
| - (void)type; /* We don't care if we are loaded via dl() or extension= */ |
| 196 | + (void)type; (void)module_number; |
178 | 197 | zend_class_entry ce;
|
179 | 198 |
|
180 | 199 | INIT_NS_CLASS_ENTRY(ce, "MongoDB\\Driver", "WriteConcernError", php_phongo_writeconcernerror_me);
|
181 |
| - ce.create_object = php_phongo_writeconcernerror_create_object; |
182 | 200 | php_phongo_writeconcernerror_ce = zend_register_internal_class(&ce TSRMLS_CC);
|
| 201 | + php_phongo_writeconcernerror_ce->create_object = php_phongo_writeconcernerror_create_object; |
183 | 202 | php_phongo_writeconcernerror_ce->ce_flags |= ZEND_ACC_FINAL_CLASS;
|
184 | 203 |
|
| 204 | + memcpy(&php_phongo_handler_writeconcernerror, phongo_get_std_object_handlers(), sizeof(zend_object_handlers)); |
| 205 | + php_phongo_handler_writeconcernerror.get_debug_info = php_phongo_writeconcernerror_get_debug_info; |
185 | 206 |
|
186 | 207 | return SUCCESS;
|
187 | 208 | }
|
|
0 commit comments