|
27 | 27 | /* External libs */
|
28 | 28 | #include <bson.h>
|
29 | 29 | #include <mongoc.h>
|
| 30 | +#include <mongoc-read-prefs-private.h> |
30 | 31 |
|
31 | 32 | /* PHP Core stuff */
|
32 | 33 | #include <php.h>
|
|
44 | 45 |
|
45 | 46 | PHONGO_API zend_class_entry *php_phongo_readpreference_ce;
|
46 | 47 |
|
| 48 | +zend_object_handlers php_phongo_handler_readpreference; |
| 49 | + |
47 | 50 | /* {{{ proto MongoDB\Driver\ReadPreference ReadPreference::__construct(integer $readPreference[, array $tagSets = array()])
|
48 | 51 | Constructs a new ReadPreference */
|
49 | 52 | PHP_METHOD(ReadPreference, __construct)
|
@@ -130,31 +133,45 @@ zend_object_value php_phongo_readpreference_create_object(zend_class_entry *clas
|
130 | 133 | zend_object_value retval;
|
131 | 134 | php_phongo_readpreference_t *intern = NULL;
|
132 | 135 |
|
133 |
| - intern = (php_phongo_readpreference_t *)emalloc(sizeof(php_phongo_readpreference_t)); |
134 |
| - memset(intern, 0, sizeof(php_phongo_readpreference_t)); |
| 136 | + intern = (php_phongo_readpreference_t *)ecalloc(1, sizeof *intern); |
135 | 137 |
|
136 | 138 | zend_object_std_init(&intern->std, class_type TSRMLS_CC);
|
137 | 139 | object_properties_init(&intern->std, class_type);
|
138 | 140 |
|
139 | 141 | retval.handle = zend_objects_store_put(intern, (zend_objects_store_dtor_t) zend_objects_destroy_object, php_phongo_readpreference_free_object, NULL TSRMLS_CC);
|
140 |
| - retval.handlers = phongo_get_std_object_handlers(); |
| 142 | + retval.handlers = &php_phongo_handler_readpreference; |
141 | 143 |
|
142 | 144 | return retval;
|
143 | 145 | } /* }}} */
|
| 146 | + |
| 147 | +HashTable *php_phongo_readpreference_get_debug_info(zval *object, int *is_temp TSRMLS_DC) /* {{{ */ |
| 148 | +{ |
| 149 | + zval retval = zval_used_for_init; |
| 150 | + mongoc_read_prefs_t *read_prefs = phongo_read_preference_from_zval(object TSRMLS_CC); |
| 151 | + |
| 152 | + |
| 153 | + *is_temp = 1; |
| 154 | + |
| 155 | + php_phongo_read_preference_to_zval(&retval, read_prefs); |
| 156 | + |
| 157 | + return Z_ARRVAL(retval); |
| 158 | +} /* }}} */ |
144 | 159 | /* }}} */
|
145 | 160 |
|
146 | 161 | /* {{{ PHP_MINIT_FUNCTION */
|
147 | 162 | PHP_MINIT_FUNCTION(ReadPreference)
|
148 | 163 | {
|
149 |
| - (void)type; /* We don't care if we are loaded via dl() or extension= */ |
150 |
| - (void)module_number; /* We don't care if we are loaded via dl() or extension= */ |
| 164 | + (void)type; (void)module_number; |
151 | 165 | zend_class_entry ce;
|
152 | 166 |
|
153 | 167 | INIT_NS_CLASS_ENTRY(ce, "MongoDB\\Driver", "ReadPreference", php_phongo_readpreference_me);
|
154 |
| - ce.create_object = php_phongo_readpreference_create_object; |
155 | 168 | php_phongo_readpreference_ce = zend_register_internal_class(&ce TSRMLS_CC);
|
| 169 | + php_phongo_readpreference_ce->create_object = php_phongo_readpreference_create_object; |
156 | 170 | php_phongo_readpreference_ce->ce_flags |= ZEND_ACC_FINAL_CLASS;
|
157 | 171 |
|
| 172 | + memcpy(&php_phongo_handler_readpreference, phongo_get_std_object_handlers(), sizeof(zend_object_handlers)); |
| 173 | + php_phongo_handler_readpreference.get_debug_info = php_phongo_readpreference_get_debug_info; |
| 174 | + |
158 | 175 | zend_declare_class_constant_long(php_phongo_readpreference_ce, ZEND_STRL("RP_PRIMARY"), MONGOC_READ_PRIMARY TSRMLS_CC);
|
159 | 176 | zend_declare_class_constant_long(php_phongo_readpreference_ce, ZEND_STRL("RP_PRIMARY_PREFERRED"), MONGOC_READ_SECONDARY TSRMLS_CC);
|
160 | 177 | zend_declare_class_constant_long(php_phongo_readpreference_ce, ZEND_STRL("RP_SECONDARY"), MONGOC_READ_PRIMARY_PREFERRED TSRMLS_CC);
|
|
0 commit comments