|
3 | 3 | #![allow(clippy::unwrap_used)] |
4 | 4 |
|
5 | 5 | use crate::ffi::{ |
6 | | - zend_ce_aggregate, zend_ce_argument_count_error, zend_ce_arithmetic_error, zend_ce_arrayaccess, |
7 | | - zend_ce_compile_error, zend_ce_countable, zend_ce_division_by_zero_error, |
8 | | - zend_ce_error_exception, zend_ce_exception, zend_ce_iterator, zend_ce_parse_error, |
9 | | - zend_ce_serializable, zend_ce_stringable, zend_ce_throwable, zend_ce_traversable, |
10 | | - zend_ce_type_error, zend_ce_unhandled_match_error, zend_ce_value_error, |
| 6 | + php_json_serializable_ce, zend_ce_aggregate, zend_ce_argument_count_error, |
| 7 | + zend_ce_arithmetic_error, zend_ce_arrayaccess, zend_ce_compile_error, zend_ce_countable, |
| 8 | + zend_ce_division_by_zero_error, zend_ce_error_exception, zend_ce_exception, zend_ce_iterator, |
| 9 | + zend_ce_parse_error, zend_ce_serializable, zend_ce_stringable, zend_ce_throwable, |
| 10 | + zend_ce_traversable, zend_ce_type_error, zend_ce_unhandled_match_error, zend_ce_value_error, |
11 | 11 | zend_standard_class_def, |
12 | 12 | }; |
13 | 13 |
|
@@ -184,6 +184,15 @@ pub fn stringable() -> &'static ClassEntry { |
184 | 184 | unsafe { zend_ce_stringable.as_ref() }.unwrap() |
185 | 185 | } |
186 | 186 |
|
| 187 | +/// Returns the [`JsonSerializable`](https://www.php.net/manual/en/class.jsonserializable.php) interface. |
| 188 | +/// |
| 189 | +/// # Panics |
| 190 | +/// |
| 191 | +/// If jsonserializable [`ClassEntry`] is not available |
| 192 | +pub fn jsonserializable() -> &'static ClassEntry { |
| 193 | + unsafe { php_json_serializable_ce.as_ref() }.unwrap() |
| 194 | +} |
| 195 | + |
187 | 196 | #[cfg(test)] |
188 | 197 | #[cfg(feature = "embed")] |
189 | 198 | mod tests { |
@@ -341,4 +350,12 @@ mod tests { |
341 | 350 | assert_eq!(stringable.name(), Some("Stringable")); |
342 | 351 | }); |
343 | 352 | } |
| 353 | + |
| 354 | + #[test] |
| 355 | + fn test_jsonserializable() { |
| 356 | + Embed::run(|| { |
| 357 | + let jsonserializable = jsonserializable(); |
| 358 | + assert_eq!(jsonserializable.name(), Some("JsonSerializable")); |
| 359 | + }); |
| 360 | + } |
344 | 361 | } |
0 commit comments