|
42 | 42 | #include "zend_smart_str.h"
|
43 | 43 | #include "zend_observer.h"
|
44 | 44 | #include "zend_system_id.h"
|
| 45 | +#include "zend_attributes.h" |
45 | 46 |
|
46 | 47 | /* Virtual current working directory support */
|
47 | 48 | #include "zend_virtual_cwd.h"
|
@@ -1489,13 +1490,43 @@ static zend_never_inline ZEND_COLD void ZEND_FASTCALL zend_wrong_property_read(z
|
1489 | 1490 |
|
1490 | 1491 | ZEND_API ZEND_COLD void ZEND_FASTCALL zend_deprecated_function(const zend_function *fbc)
|
1491 | 1492 | {
|
1492 |
| - if (fbc->common.scope) { |
1493 |
| - zend_error(E_DEPRECATED, "Method %s::%s() is deprecated", |
1494 |
| - ZSTR_VAL(fbc->common.scope->name), |
1495 |
| - ZSTR_VAL(fbc->common.function_name) |
1496 |
| - ); |
| 1493 | + zend_attribute *deprecated; |
| 1494 | + zend_string *reason = NULL; |
| 1495 | + |
| 1496 | + if (fbc->common.attributes != NULL) { |
| 1497 | + deprecated = zend_get_attribute_str(fbc->common.attributes, "deprecated", sizeof("deprecated")-1); |
| 1498 | + |
| 1499 | + if (deprecated->argc >= 1) { |
| 1500 | + zval message; |
| 1501 | + |
| 1502 | + if (FAILURE != zend_get_attribute_value(&message, deprecated, 0, fbc->common.scope)) { |
| 1503 | + reason = Z_STR(message); |
| 1504 | + } |
| 1505 | + } |
| 1506 | + } |
| 1507 | + |
| 1508 | + if (reason != NULL) { |
| 1509 | + if (fbc->common.scope) { |
| 1510 | + zend_error(E_DEPRECATED, "Method %s::%s() is deprecated, %s", |
| 1511 | + ZSTR_VAL(fbc->common.scope->name), |
| 1512 | + ZSTR_VAL(fbc->common.function_name), |
| 1513 | + ZSTR_VAL(reason) |
| 1514 | + ); |
| 1515 | + } else { |
| 1516 | + zend_error(E_DEPRECATED, "Function %s() is deprecated, %s", |
| 1517 | + ZSTR_VAL(fbc->common.function_name), |
| 1518 | + ZSTR_VAL(reason) |
| 1519 | + ); |
| 1520 | + } |
1497 | 1521 | } else {
|
1498 |
| - zend_error(E_DEPRECATED, "Function %s() is deprecated", ZSTR_VAL(fbc->common.function_name)); |
| 1522 | + if (fbc->common.scope) { |
| 1523 | + zend_error(E_DEPRECATED, "Method %s::%s() is deprecated", |
| 1524 | + ZSTR_VAL(fbc->common.scope->name), |
| 1525 | + ZSTR_VAL(fbc->common.function_name) |
| 1526 | + ); |
| 1527 | + } else { |
| 1528 | + zend_error(E_DEPRECATED, "Function %s() is deprecated", ZSTR_VAL(fbc->common.function_name)); |
| 1529 | + } |
1499 | 1530 | }
|
1500 | 1531 | }
|
1501 | 1532 |
|
|
0 commit comments