File tree Expand file tree Collapse file tree 2 files changed +45
-0
lines changed
Expand file tree Collapse file tree 2 files changed +45
-0
lines changed Original file line number Diff line number Diff line change @@ -216,12 +216,36 @@ static HashTable* phongo_readconcern_get_properties(zend_object* object)
216216 return phongo_readconcern_get_properties_hash (object , false);
217217}
218218
219+ static int phongo_readconcern_compare_objects (zval * o1 , zval * o2 )
220+ {
221+ ZEND_COMPARE_OBJECTS_FALLBACK (o1 , o2 );
222+
223+ phongo_readconcern_t * intern1 ;
224+ phongo_readconcern_t * intern2 ;
225+ int retval ;
226+
227+ intern1 = Z_READCONCERN_OBJ_P (o1 );
228+ intern2 = Z_READCONCERN_OBJ_P (o2 );
229+
230+ retval = strcmp (
231+ mongoc_read_concern_get_level (intern1 -> read_concern ),
232+ mongoc_read_concern_get_level (intern2 -> read_concern )
233+ );
234+
235+ if (retval != 0 ) {
236+ return retval ;
237+ }
238+
239+ return 0 ;
240+ }
241+
219242void phongo_readconcern_init_ce (INIT_FUNC_ARGS )
220243{
221244 phongo_readconcern_ce = register_class_MongoDB_Driver_ReadConcern (phongo_serializable_ce );
222245 phongo_readconcern_ce -> create_object = phongo_readconcern_create_object ;
223246
224247 memcpy (& phongo_handler_readconcern , phongo_get_std_object_handlers (), sizeof (zend_object_handlers ));
248+ phongo_handler_readconcern .compare = phongo_readconcern_compare_objects ;
225249 phongo_handler_readconcern .get_debug_info = phongo_readconcern_get_debug_info ;
226250 phongo_handler_readconcern .get_properties = phongo_readconcern_get_properties ;
227251 phongo_handler_readconcern .free_obj = phongo_readconcern_free_object ;
Original file line number Diff line number Diff line change 1+ --TEST--
2+ MongoDB\BSON\ReadConcern comparisons
3+ --FILE--
4+ <?php
5+
6+ var_dump (new MongoDB \Driver \ReadConcern (MongoDB \Driver \ReadConcern::LOCAL ) == new MongoDB \Driver \ReadConcern (MongoDB \Driver \ReadConcern::LOCAL ));
7+ var_dump (new MongoDB \Driver \ReadConcern (MongoDB \Driver \ReadConcern::LOCAL ) > new MongoDB \Driver \ReadConcern (MongoDB \Driver \ReadConcern::AVAILABLE ));
8+ var_dump (new MongoDB \Driver \ReadConcern (MongoDB \Driver \ReadConcern::LOCAL ) < new MongoDB \Driver \ReadConcern (MongoDB \Driver \ReadConcern::AVAILABLE ));
9+
10+ // Object comparison fallback if one value is not a ReadConcern
11+ var_dump (new MongoDB \Driver \ReadConcern () > new MongoDB \BSON \Int64 ('8589934592 ' ));
12+
13+ ?>
14+ ===DONE===
15+ <?php exit (0 ); ?>
16+ --EXPECT--
17+ bool(true)
18+ bool(true)
19+ bool(false)
20+ bool(false)
21+ ===DONE===
You can’t perform that action at this time.
0 commit comments