Commit 1cb9d87ee52 for php

commit 1cb9d87ee529a958ca56032dbc84aec1685381ed
Author: Gina Peter Banyard <girgias@php.net>
Date:   Fri Oct 23 19:54:01 2026 +0100

    intl: use C++ linkage instead of C linkage when easily possible

    intl: use C++ linkage for BreakIterator PHP functions/methods

    intl: use C++ linkage for common code

    intl: use C++ linkage for Spoofchecker PHP methods

    intl: use C++ linkage for IntlNumberRangeFormatter PHP methods

    intl: use C++ linkage for IntlNumberFormatter PHP methods

    intl: No need to extern C the arginfo header for IntlListFormatter

    intl: use C++ linkage for resourcebundle_get_iterator

    Closes GH-24625

diff --git a/ext/intl/breakiterator/breakiterator_class.cpp b/ext/intl/breakiterator/breakiterator_class.cpp
index c9f2a53b58d..5b63580e6ad 100644
--- a/ext/intl/breakiterator/breakiterator_class.cpp
+++ b/ext/intl/breakiterator/breakiterator_class.cpp
@@ -26,9 +26,7 @@

 #define USE_BREAKITERATOR_POINTER 1
 #include "breakiterator_class.h"
-BEGIN_EXTERN_C()
 #include "breakiterator_arginfo.h"
-END_EXTERN_C()
 #include <zend_exceptions.h>
 #include <zend_interfaces.h>
 #include <assert.h>
@@ -53,7 +51,7 @@ static void breakiterator_object_construct(zval *object,
 	bio->biter = biter;
 }

-U_CFUNC	void breakiterator_object_create(zval *object,
+void breakiterator_object_create(zval *object,
 										 BreakIterator *biter, int brand_new)
 {
 	UClassID classId = biter->getDynamicClassID();
diff --git a/ext/intl/breakiterator/breakiterator_class.h b/ext/intl/breakiterator/breakiterator_class.h
index 9038aa3e7f7..2cee8e3db70 100644
--- a/ext/intl/breakiterator/breakiterator_class.h
+++ b/ext/intl/breakiterator/breakiterator_class.h
@@ -62,9 +62,9 @@ typedef struct {
 		RETURN_THROWS(); \
 	}

-BEGIN_EXTERN_C()
 void breakiterator_object_create(zval *object, BreakIterator *break_iter, int brand_new);

+BEGIN_EXTERN_C()
 void breakiterator_register_BreakIterator_class(void);

 extern zend_class_entry *BreakIterator_ce_ptr,
diff --git a/ext/intl/breakiterator/breakiterator_iterators.cpp b/ext/intl/breakiterator/breakiterator_iterators.cpp
index 8b1c136a064..4c62522c95a 100644
--- a/ext/intl/breakiterator/breakiterator_iterators.cpp
+++ b/ext/intl/breakiterator/breakiterator_iterators.cpp
@@ -23,9 +23,7 @@

 #define USE_BREAKITERATOR_POINTER
 #include "breakiterator_class.h"
-BEGIN_EXTERN_C()
 #include "breakiterator_iterators_arginfo.h"
-END_EXTERN_C()
 #include "../intl_convert.h"
 #include "../locale/locale.h"
 #include <zend_exceptions.h>
@@ -253,7 +251,7 @@ void IntlIterator_from_BreakIterator_parts(zval *break_iter_zv,
 	((zoi_break_iter_parts*)ii->iterator)->index_right = 0;
 }

-U_CFUNC PHP_METHOD(IntlPartsIterator, getBreakIterator)
+PHP_METHOD(IntlPartsIterator, getBreakIterator)
 {
 	INTLITERATOR_METHOD_INIT_VARS;

@@ -264,7 +262,7 @@ U_CFUNC PHP_METHOD(IntlPartsIterator, getBreakIterator)
 	RETURN_COPY_DEREF(&ii->iterator->data);
 }

-U_CFUNC PHP_METHOD(IntlPartsIterator, getRuleStatus)
+PHP_METHOD(IntlPartsIterator, getRuleStatus)
 {
 	INTLITERATOR_METHOD_INIT_VARS;

diff --git a/ext/intl/breakiterator/breakiterator_iterators.h b/ext/intl/breakiterator/breakiterator_iterators.h
index bca19cc2b0b..b92ea22f7f3 100644
--- a/ext/intl/breakiterator/breakiterator_iterators.h
+++ b/ext/intl/breakiterator/breakiterator_iterators.h
@@ -16,7 +16,6 @@

 #include <unicode/umachine.h>

-#include <math.h>
 #include <php.h>

 typedef enum {
diff --git a/ext/intl/breakiterator/breakiterator_methods.cpp b/ext/intl/breakiterator/breakiterator_methods.cpp
index 05d8c659bf2..13f4fddf362 100644
--- a/ext/intl/breakiterator/breakiterator_methods.cpp
+++ b/ext/intl/breakiterator/breakiterator_methods.cpp
@@ -32,7 +32,7 @@ using PHP::CodePointBreakIterator;
 using icu::BreakIterator;
 using icu::Locale;

-U_CFUNC PHP_METHOD(IntlBreakIterator, __construct)
+PHP_METHOD(IntlBreakIterator, __construct)
 {
 	zend_throw_exception( NULL,
 		"An object of this type cannot be created with the new operator",
@@ -68,42 +68,42 @@ static void _breakiter_factory(
 	breakiterator_object_create(return_value, biter, 1);
 }

-U_CFUNC PHP_METHOD(IntlBreakIterator, createWordInstance)
+PHP_METHOD(IntlBreakIterator, createWordInstance)
 {
 	_breakiter_factory(
 			&BreakIterator::createWordInstance,
 			INTERNAL_FUNCTION_PARAM_PASSTHRU);
 }

-U_CFUNC PHP_METHOD(IntlBreakIterator, createLineInstance)
+PHP_METHOD(IntlBreakIterator, createLineInstance)
 {
 	_breakiter_factory(
 			&BreakIterator::createLineInstance,
 			INTERNAL_FUNCTION_PARAM_PASSTHRU);
 }

-U_CFUNC PHP_METHOD(IntlBreakIterator, createCharacterInstance)
+PHP_METHOD(IntlBreakIterator, createCharacterInstance)
 {
 	_breakiter_factory(
 			&BreakIterator::createCharacterInstance,
 			INTERNAL_FUNCTION_PARAM_PASSTHRU);
 }

-U_CFUNC PHP_METHOD(IntlBreakIterator, createSentenceInstance)
+PHP_METHOD(IntlBreakIterator, createSentenceInstance)
 {
 	_breakiter_factory(
 			&BreakIterator::createSentenceInstance,
 			INTERNAL_FUNCTION_PARAM_PASSTHRU);
 }

-U_CFUNC PHP_METHOD(IntlBreakIterator, createTitleInstance)
+PHP_METHOD(IntlBreakIterator, createTitleInstance)
 {
 	_breakiter_factory(
 			&BreakIterator::createTitleInstance,
 			INTERNAL_FUNCTION_PARAM_PASSTHRU);
 }

-U_CFUNC PHP_METHOD(IntlBreakIterator, createCodePointInstance)
+PHP_METHOD(IntlBreakIterator, createCodePointInstance)
 {
 	intl_error_reset(NULL);

@@ -113,7 +113,7 @@ U_CFUNC PHP_METHOD(IntlBreakIterator, createCodePointInstance)
 	breakiterator_object_create(return_value, cpbi, 1);
 }

-U_CFUNC PHP_METHOD(IntlBreakIterator, getText)
+PHP_METHOD(IntlBreakIterator, getText)
 {
 	BREAKITER_METHOD_INIT_VARS;
 	object = ZEND_THIS;
@@ -129,7 +129,7 @@ U_CFUNC PHP_METHOD(IntlBreakIterator, getText)
 	}
 }

-U_CFUNC PHP_METHOD(IntlBreakIterator, setText)
+PHP_METHOD(IntlBreakIterator, setText)
 {
 	UText	*ut = NULL;
 	zend_string	*text;
@@ -198,25 +198,25 @@ static void _breakiter_int32_ret_int32(
 	RETURN_LONG((zend_long)res);
 }

-U_CFUNC PHP_METHOD(IntlBreakIterator, first)
+PHP_METHOD(IntlBreakIterator, first)
 {
 	_breakiter_no_args_ret_int32(&BreakIterator::first,
 			INTERNAL_FUNCTION_PARAM_PASSTHRU);
 }

-U_CFUNC PHP_METHOD(IntlBreakIterator, last)
+PHP_METHOD(IntlBreakIterator, last)
 {
 	_breakiter_no_args_ret_int32(&BreakIterator::last,
 			INTERNAL_FUNCTION_PARAM_PASSTHRU);
 }

-U_CFUNC PHP_METHOD(IntlBreakIterator, previous)
+PHP_METHOD(IntlBreakIterator, previous)
 {
 	_breakiter_no_args_ret_int32(&BreakIterator::previous,
 			INTERNAL_FUNCTION_PARAM_PASSTHRU);
 }

-U_CFUNC PHP_METHOD(IntlBreakIterator, next)
+PHP_METHOD(IntlBreakIterator, next)
 {
 	zval *arg = NULL;

@@ -235,7 +235,7 @@ U_CFUNC PHP_METHOD(IntlBreakIterator, next)
 	}
 }

-U_CFUNC PHP_METHOD(IntlBreakIterator, current)
+PHP_METHOD(IntlBreakIterator, current)
 {
 	BREAKITER_METHOD_INIT_VARS;
 	object = ZEND_THIS;
@@ -249,21 +249,21 @@ U_CFUNC PHP_METHOD(IntlBreakIterator, current)
 	RETURN_LONG((zend_long)res);
 }

-U_CFUNC PHP_METHOD(IntlBreakIterator, following)
+PHP_METHOD(IntlBreakIterator, following)
 {
 	_breakiter_int32_ret_int32(
 			&BreakIterator::following,
 			INTERNAL_FUNCTION_PARAM_PASSTHRU);
 }

-U_CFUNC PHP_METHOD(IntlBreakIterator, preceding)
+PHP_METHOD(IntlBreakIterator, preceding)
 {
 	_breakiter_int32_ret_int32(
 			&BreakIterator::preceding,
 			INTERNAL_FUNCTION_PARAM_PASSTHRU);
 }

-U_CFUNC PHP_METHOD(IntlBreakIterator, isBoundary)
+PHP_METHOD(IntlBreakIterator, isBoundary)
 {
 	zend_long offset;
 	BREAKITER_METHOD_INIT_VARS;
@@ -285,7 +285,7 @@ U_CFUNC PHP_METHOD(IntlBreakIterator, isBoundary)
 	RETURN_BOOL((zend_long)res);
 }

-U_CFUNC PHP_METHOD(IntlBreakIterator, getLocale)
+PHP_METHOD(IntlBreakIterator, getLocale)
 {
 	zend_long	locale_type;
 	BREAKITER_METHOD_INIT_VARS;
@@ -309,7 +309,7 @@ U_CFUNC PHP_METHOD(IntlBreakIterator, getLocale)
 	RETURN_STRING(locale.getName());
 }

-U_CFUNC PHP_METHOD(IntlBreakIterator, getPartsIterator)
+PHP_METHOD(IntlBreakIterator, getPartsIterator)
 {
 	zend_long key_type = 0;
 	BREAKITER_METHOD_INIT_VARS;
@@ -334,7 +334,7 @@ U_CFUNC PHP_METHOD(IntlBreakIterator, getPartsIterator)
 		object, return_value, (parts_iter_key_type)key_type);
 }

-U_CFUNC PHP_METHOD(IntlBreakIterator, getErrorCode)
+PHP_METHOD(IntlBreakIterator, getErrorCode)
 {
 	BREAKITER_METHOD_INIT_VARS;
 	object = ZEND_THIS;
@@ -346,7 +346,7 @@ U_CFUNC PHP_METHOD(IntlBreakIterator, getErrorCode)
 	RETURN_LONG((zend_long)BREAKITER_ERROR_CODE(bio));
 }

-U_CFUNC PHP_METHOD(IntlBreakIterator, getErrorMessage)
+PHP_METHOD(IntlBreakIterator, getErrorMessage)
 {
 	zend_string* message = NULL;
 	BREAKITER_METHOD_INIT_VARS;
@@ -362,7 +362,7 @@ U_CFUNC PHP_METHOD(IntlBreakIterator, getErrorMessage)
 	RETURN_STR(message);
 }

-U_CFUNC PHP_METHOD(IntlBreakIterator, getIterator)
+PHP_METHOD(IntlBreakIterator, getIterator)
 {
 	ZEND_PARSE_PARAMETERS_NONE();

diff --git a/ext/intl/breakiterator/codepointiterator_methods.cpp b/ext/intl/breakiterator/codepointiterator_methods.cpp
index 934e10c2cbf..810274a69cf 100644
--- a/ext/intl/breakiterator/codepointiterator_methods.cpp
+++ b/ext/intl/breakiterator/codepointiterator_methods.cpp
@@ -23,7 +23,7 @@ static inline CodePointBreakIterator *fetch_cpbi(BreakIterator_object *bio) {
 	return (CodePointBreakIterator*)bio->biter;
 }

-U_CFUNC PHP_METHOD(IntlCodePointBreakIterator, getLastCodePoint)
+PHP_METHOD(IntlCodePointBreakIterator, getLastCodePoint)
 {
 	BREAKITER_METHOD_INIT_VARS;
 	object = ZEND_THIS;
diff --git a/ext/intl/breakiterator/rulebasedbreakiterator_methods.cpp b/ext/intl/breakiterator/rulebasedbreakiterator_methods.cpp
index 5a978a97f43..f03f027e281 100644
--- a/ext/intl/breakiterator/rulebasedbreakiterator_methods.cpp
+++ b/ext/intl/breakiterator/rulebasedbreakiterator_methods.cpp
@@ -30,7 +30,7 @@ static inline RuleBasedBreakIterator *fetch_rbbi(BreakIterator_object *bio) {
 	return (RuleBasedBreakIterator*)bio->biter;
 }

-U_CFUNC PHP_METHOD(IntlRuleBasedBreakIterator, __construct)
+PHP_METHOD(IntlRuleBasedBreakIterator, __construct)
 {
 	zend_string *rules;
 	bool compiled = false;
@@ -90,7 +90,7 @@ U_CFUNC PHP_METHOD(IntlRuleBasedBreakIterator, __construct)
 	}
 }

-U_CFUNC PHP_METHOD(IntlRuleBasedBreakIterator, getRules)
+PHP_METHOD(IntlRuleBasedBreakIterator, getRules)
 {
 	BREAKITER_METHOD_INIT_VARS;
 	object = ZEND_THIS;
@@ -112,7 +112,7 @@ U_CFUNC PHP_METHOD(IntlRuleBasedBreakIterator, getRules)
 	RETVAL_STR(u8str);
 }

-U_CFUNC PHP_METHOD(IntlRuleBasedBreakIterator, getRuleStatus)
+PHP_METHOD(IntlRuleBasedBreakIterator, getRuleStatus)
 {
 	BREAKITER_METHOD_INIT_VARS;
 	object = ZEND_THIS;
@@ -124,7 +124,7 @@ U_CFUNC PHP_METHOD(IntlRuleBasedBreakIterator, getRuleStatus)
 	RETURN_LONG(fetch_rbbi(bio)->getRuleStatus());
 }

-U_CFUNC PHP_METHOD(IntlRuleBasedBreakIterator, getRuleStatusVec)
+PHP_METHOD(IntlRuleBasedBreakIterator, getRuleStatusVec)
 {
 	BREAKITER_METHOD_INIT_VARS;
 	object = ZEND_THIS;
@@ -154,7 +154,7 @@ U_CFUNC PHP_METHOD(IntlRuleBasedBreakIterator, getRuleStatusVec)
 	}
 }

-U_CFUNC PHP_METHOD(IntlRuleBasedBreakIterator, getBinaryRules)
+PHP_METHOD(IntlRuleBasedBreakIterator, getBinaryRules)
 {
 	BREAKITER_METHOD_INIT_VARS;
 	object = ZEND_THIS;
diff --git a/ext/intl/common/common_date.cpp b/ext/intl/common/common_date.cpp
index db800cc01cc..50b4b065efa 100644
--- a/ext/intl/common/common_date.cpp
+++ b/ext/intl/common/common_date.cpp
@@ -19,6 +19,7 @@
 #include "../php_intl.h"
 #define USE_CALENDAR_POINTER 1
 #include "../calendar/calendar_class.h"
+#include "common_date.h"

 U_CDECL_BEGIN
 #include <ext/date/php_date.h>
@@ -31,7 +32,7 @@ using icu::UnicodeString;

 /* {{{ timezone_convert_datetimezone
  *      The timezone in DateTime and DateTimeZone is not unified. */
-U_CFUNC TimeZone *timezone_convert_datetimezone(
+TimeZone *timezone_convert_datetimezone(
 	int type, void *object, bool is_datetime,
 	intl_error *outside_error)
 {
@@ -89,7 +90,7 @@ U_CFUNC TimeZone *timezone_convert_datetimezone(
 }
 /* }}} */

-U_CFUNC zend_result intl_datetime_decompose(zend_object *obj, double *millis, TimeZone **tz,
+zend_result intl_datetime_decompose(zend_object *obj, double *millis, TimeZone **tz,
 		intl_error *err)
 {
 	char	*message;
@@ -153,7 +154,7 @@ U_CFUNC zend_result intl_datetime_decompose(zend_object *obj, double *millis, Ti
 	return SUCCESS;
 }

-U_CFUNC double intl_zval_to_millis(zval *z, intl_error *err)
+double intl_zval_to_millis(zval *z, intl_error *err)
 {
 	double	rv = ZEND_NAN;
 	zend_long	lv;
diff --git a/ext/intl/common/common_date.h b/ext/intl/common/common_date.h
index 42936875e36..e8f8946e0ac 100644
--- a/ext/intl/common/common_date.h
+++ b/ext/intl/common/common_date.h
@@ -29,11 +29,11 @@

 using icu::TimeZone;

-U_CFUNC TimeZone *timezone_convert_datetimezone(int type, void *object, bool is_datetime, intl_error *outside_error);
-U_CFUNC zend_result intl_datetime_decompose(zend_object *obj, double *millis, TimeZone **tz, intl_error *err);
+TimeZone *timezone_convert_datetimezone(int type, void *object, bool is_datetime, intl_error *outside_error);
+zend_result intl_datetime_decompose(zend_object *obj, double *millis, TimeZone **tz, intl_error *err);

 #endif

-U_CFUNC double intl_zval_to_millis(zval *z, intl_error *err);
+double intl_zval_to_millis(zval *z, intl_error *err);

 #endif	/* COMMON_DATE_H */
diff --git a/ext/intl/common/common_enum.cpp b/ext/intl/common/common_enum.cpp
index b9549194507..7bc5fca1f6a 100644
--- a/ext/intl/common/common_enum.cpp
+++ b/ext/intl/common/common_enum.cpp
@@ -37,17 +37,17 @@ void zoi_with_current_dtor(zend_object_iterator *iter)
 	ZVAL_UNDEF(&zoiwc->wrapping_obj);
 }

-U_CFUNC zend_result zoi_with_current_valid(zend_object_iterator *iter)
+zend_result zoi_with_current_valid(zend_object_iterator *iter)
 {
 	return Z_ISUNDEF(((zoi_with_current*)iter)->current)? FAILURE : SUCCESS;
 }

-U_CFUNC zval *zoi_with_current_get_current_data(zend_object_iterator *iter)
+zval *zoi_with_current_get_current_data(zend_object_iterator *iter)
 {
 	return &((zoi_with_current*)iter)->current;
 }

-U_CFUNC void zoi_with_current_invalidate_current(zend_object_iterator *iter)
+void zoi_with_current_invalidate_current(zend_object_iterator *iter)
 {
 	zoi_with_current *zoi_iter = (zoi_with_current*)iter;
 	if (!Z_ISUNDEF(zoi_iter->current)) {
@@ -124,7 +124,7 @@ static const zend_object_iterator_funcs string_enum_object_iterator_funcs = {
 	zoi_with_current_get_gc,
 };

-U_CFUNC void IntlIterator_from_StringEnumeration(StringEnumeration *se, zval *object)
+void IntlIterator_from_StringEnumeration(StringEnumeration *se, zval *object)
 {
 	IntlIterator_object *ii;
 	object_init_ex(object, IntlIterator_ce_ptr);
diff --git a/ext/intl/common/common_enum.h b/ext/intl/common/common_enum.h
index 48a11bfbbea..aa7931c74f6 100644
--- a/ext/intl/common/common_enum.h
+++ b/ext/intl/common/common_enum.h
@@ -59,15 +59,15 @@ typedef struct {
 extern zend_class_entry *IntlIterator_ce_ptr;
 extern zend_object_handlers IntlIterator_handlers;

-U_CFUNC void zoi_with_current_dtor(zend_object_iterator *iter);
-U_CFUNC zend_result zoi_with_current_valid(zend_object_iterator *iter);
-U_CFUNC zval *zoi_with_current_get_current_data(zend_object_iterator *iter);
-U_CFUNC void zoi_with_current_invalidate_current(zend_object_iterator *iter);
-U_CFUNC HashTable *zoi_with_current_get_gc(zend_object_iterator *iter, zval **table, int *n);
+void zoi_with_current_dtor(zend_object_iterator *iter);
+zend_result zoi_with_current_valid(zend_object_iterator *iter);
+zval *zoi_with_current_get_current_data(zend_object_iterator *iter);
+void zoi_with_current_invalidate_current(zend_object_iterator *iter);
+HashTable *zoi_with_current_get_gc(zend_object_iterator *iter, zval **table, int *n);

 #ifdef __cplusplus
 using icu::StringEnumeration;
-U_CFUNC void IntlIterator_from_StringEnumeration(StringEnumeration *se, zval *object);
+void IntlIterator_from_StringEnumeration(StringEnumeration *se, zval *object);
 #endif

 U_CFUNC void intl_register_common_symbols(int module_number);
diff --git a/ext/intl/listformatter/listformatter_class.cpp b/ext/intl/listformatter/listformatter_class.cpp
index 10ec6053dc8..89ebe868559 100644
--- a/ext/intl/listformatter/listformatter_class.cpp
+++ b/ext/intl/listformatter/listformatter_class.cpp
@@ -20,9 +20,7 @@

 #include "php_intl.h"
 #include "listformatter_class.h"
-BEGIN_EXTERN_C()
 #include "listformatter_arginfo.h"
-END_EXTERN_C()

 #include <memory>

diff --git a/ext/intl/numberformatter/numberformatter_class.cpp b/ext/intl/numberformatter/numberformatter_class.cpp
index cc98c075f56..16f6e7492cc 100644
--- a/ext/intl/numberformatter/numberformatter_class.cpp
+++ b/ext/intl/numberformatter/numberformatter_class.cpp
@@ -23,9 +23,7 @@
 #include "../intl_convertcpp.h"
 #include "../php_intl.h"

-BEGIN_EXTERN_C()
 #include "numberformatter_arginfo.h"
-END_EXTERN_C()
 #include "numberformatter_class.h"

 using icu::number::NumberFormatter;
@@ -60,14 +58,14 @@ static zend_object *numberformatter_create_object(zend_class_entry *ce)
 	return &nfo->zo;
 }

-U_CFUNC PHP_METHOD(IntlNumberFormatter, __construct)
+PHP_METHOD(IntlNumberFormatter, __construct)
 {
 	ZEND_PARSE_PARAMETERS_NONE();

 	zend_throw_error(nullptr, "Cannot directly construct %s, use createFromSkeleton method instead", ZSTR_VAL(Z_OBJCE_P(ZEND_THIS)->name));
 }

-U_CFUNC PHP_METHOD(IntlNumberFormatter, createFromSkeleton)
+PHP_METHOD(IntlNumberFormatter, createFromSkeleton)
 {
 	char *skeleton, *locale;
 	size_t skeleton_len, locale_len;
@@ -114,7 +112,7 @@ U_CFUNC PHP_METHOD(IntlNumberFormatter, createFromSkeleton)
 	NUMBERFORMATTER_OBJECT(Z_INTL_INTLNUMBERFORMATTER_P(return_value)) = new LocalizedNumberFormatter(nf.locale(icu::Locale::createCanonical(locale)));
 }

-U_CFUNC PHP_METHOD(IntlNumberFormatter, format)
+PHP_METHOD(IntlNumberFormatter, format)
 {
 	zval *value;

@@ -163,14 +161,14 @@ U_CFUNC PHP_METHOD(IntlNumberFormatter, format)
 	RETVAL_STR(ret);
 }

-U_CFUNC PHP_METHOD(IntlNumberFormatter, getErrorCode)
+PHP_METHOD(IntlNumberFormatter, getErrorCode)
 {
 	ZEND_PARSE_PARAMETERS_NONE();

 	RETURN_LONG(INTL_DATA_ERROR_CODE(Z_INTL_INTLNUMBERFORMATTER_P(ZEND_THIS)));
 }

-U_CFUNC PHP_METHOD(IntlNumberFormatter, getErrorMessage)
+PHP_METHOD(IntlNumberFormatter, getErrorMessage)
 {
 	ZEND_PARSE_PARAMETERS_NONE();

diff --git a/ext/intl/rangeformatter/rangeformatter_class.cpp b/ext/intl/rangeformatter/rangeformatter_class.cpp
index 1291d17b37b..5b07cbbdee7 100644
--- a/ext/intl/rangeformatter/rangeformatter_class.cpp
+++ b/ext/intl/rangeformatter/rangeformatter_class.cpp
@@ -27,9 +27,7 @@
 #include "../php_intl.h"
 #include "../intl_data.h"

-BEGIN_EXTERN_C()
 #include "rangeformatter_arginfo.h"
-END_EXTERN_C()

 #include "rangeformatter_class.h"

@@ -73,13 +71,13 @@ static icu::Formattable rangeformatter_create_formattable(const zval *number)
     return formattable;
 }

-U_CFUNC PHP_METHOD(IntlNumberRangeFormatter, __construct)
+PHP_METHOD(IntlNumberRangeFormatter, __construct)
 {
     ZEND_PARSE_PARAMETERS_NONE();
     zend_throw_error(NULL, "Cannot directly construct %s, use createFromSkeleton method instead", ZSTR_VAL(Z_OBJCE_P(ZEND_THIS)->name));
 }

-U_CFUNC PHP_METHOD(IntlNumberRangeFormatter, createFromSkeleton)
+PHP_METHOD(IntlNumberRangeFormatter, createFromSkeleton)
 {
     char* skeleton;
     char* locale;
@@ -157,7 +155,7 @@ U_CFUNC PHP_METHOD(IntlNumberRangeFormatter, createFromSkeleton)
     RETURN_OBJ(obj);
 }

-U_CFUNC PHP_METHOD(IntlNumberRangeFormatter, format)
+PHP_METHOD(IntlNumberRangeFormatter, format)
 {
     zval *start;
     zval *end;
@@ -212,7 +210,7 @@ U_CFUNC PHP_METHOD(IntlNumberRangeFormatter, format)
     RETVAL_NEW_STR(ret);
 }

-U_CFUNC PHP_METHOD(IntlNumberRangeFormatter, getErrorCode)
+PHP_METHOD(IntlNumberRangeFormatter, getErrorCode)
 {
     ZEND_PARSE_PARAMETERS_NONE();

@@ -221,7 +219,7 @@ U_CFUNC PHP_METHOD(IntlNumberRangeFormatter, getErrorCode)
     RETURN_LONG(intl_error_get_code(&obj->nrf_data.error));
 }

-U_CFUNC PHP_METHOD(IntlNumberRangeFormatter, getErrorMessage)
+PHP_METHOD(IntlNumberRangeFormatter, getErrorMessage)
 {
     ZEND_PARSE_PARAMETERS_NONE();

@@ -230,7 +228,7 @@ U_CFUNC PHP_METHOD(IntlNumberRangeFormatter, getErrorMessage)
     RETURN_STR(intl_error_get_message(&obj->nrf_data.error));
 }

-void IntlNumberRangeFormatter_object_free(zend_object *object)
+static void IntlNumberRangeFormatter_object_free(zend_object *object)
 {
     IntlNumberRangeFormatter_object* nfo = php_intl_numberrangeformatter_fetch_object(object);

diff --git a/ext/intl/resourcebundle/resourcebundle_iterator.cpp b/ext/intl/resourcebundle/resourcebundle_iterator.cpp
index 1ff2f666766..73f7ff7365d 100644
--- a/ext/intl/resourcebundle/resourcebundle_iterator.cpp
+++ b/ext/intl/resourcebundle/resourcebundle_iterator.cpp
@@ -144,8 +144,7 @@ static const zend_object_iterator_funcs resourcebundle_iterator_funcs = {
 };
 /* }}} */

-/* {{{ resourcebundle_get_iterator */
-U_CFUNC zend_object_iterator *resourcebundle_get_iterator( zend_class_entry *ce, zval *object, int byref )
+zend_object_iterator *resourcebundle_get_iterator( zend_class_entry *ce, zval *object, int byref )
 {
 	if (byref) {
 		zend_throw_error(NULL, "An iterator cannot be used with foreach by reference");
@@ -174,4 +173,3 @@ U_CFUNC zend_object_iterator *resourcebundle_get_iterator( zend_class_entry *ce,

 	return (zend_object_iterator *) iterator;
 }
-/* }}} */
diff --git a/ext/intl/resourcebundle/resourcebundle_iterator.h b/ext/intl/resourcebundle/resourcebundle_iterator.h
index 3eab1f09981..2a155fc8c8d 100644
--- a/ext/intl/resourcebundle/resourcebundle_iterator.h
+++ b/ext/intl/resourcebundle/resourcebundle_iterator.h
@@ -29,6 +29,6 @@ typedef struct {
 	zend_long             i;
 } ResourceBundle_iterator;

-U_CFUNC zend_object_iterator *resourcebundle_get_iterator( zend_class_entry *ce, zval *object, int byref );
+zend_object_iterator *resourcebundle_get_iterator( zend_class_entry *ce, zval *object, int byref );

 #endif // #ifndef RESOURCEBUNDLE_ITERATOR_H
diff --git a/ext/intl/spoofchecker/spoofchecker_class.cpp b/ext/intl/spoofchecker/spoofchecker_class.cpp
index 317b844e993..55d39ecfa2a 100644
--- a/ext/intl/spoofchecker/spoofchecker_class.cpp
+++ b/ext/intl/spoofchecker/spoofchecker_class.cpp
@@ -18,9 +18,7 @@

 #include <unicode/uspoof.h>

-BEGIN_EXTERN_C()
 #include "spoofchecker_arginfo.h"
-END_EXTERN_C()

 zend_class_entry *Spoofchecker_ce_ptr = NULL;
 static zend_object_handlers Spoofchecker_handlers;
diff --git a/ext/intl/spoofchecker/spoofchecker_create.cpp b/ext/intl/spoofchecker/spoofchecker_create.cpp
index 9dbd2a6eac0..4c15f1428db 100644
--- a/ext/intl/spoofchecker/spoofchecker_create.cpp
+++ b/ext/intl/spoofchecker/spoofchecker_create.cpp
@@ -26,7 +26,7 @@
 #include "spoofchecker_class.h"

 /* {{{ Spoofchecker object constructor. */
-U_CFUNC PHP_METHOD(Spoofchecker, __construct)
+PHP_METHOD(Spoofchecker, __construct)
 {
 	SPOOFCHECKER_METHOD_INIT_VARS;

diff --git a/ext/intl/spoofchecker/spoofchecker_main.cpp b/ext/intl/spoofchecker/spoofchecker_main.cpp
index 92c7bb44de5..8caa5e345aa 100644
--- a/ext/intl/spoofchecker/spoofchecker_main.cpp
+++ b/ext/intl/spoofchecker/spoofchecker_main.cpp
@@ -26,7 +26,7 @@
 #include "spoofchecker_class.h"

 /* {{{ Checks if a given text contains any suspicious characters */
-U_CFUNC PHP_METHOD(Spoofchecker, isSuspicious)
+PHP_METHOD(Spoofchecker, isSuspicious)
 {
 	int32_t ret, errmask;
 	zend_string *text;
@@ -61,7 +61,7 @@ U_CFUNC PHP_METHOD(Spoofchecker, isSuspicious)
 /* }}} */

 /* {{{ Checks if a given text contains any confusable characters */
-U_CFUNC PHP_METHOD(Spoofchecker, areConfusable)
+PHP_METHOD(Spoofchecker, areConfusable)
 {
 	int ret;
 	zend_string *s1, *s2;
@@ -95,7 +95,7 @@ U_CFUNC PHP_METHOD(Spoofchecker, areConfusable)
 /* }}} */

 /* {{{ Locales to use when running checks */
-U_CFUNC PHP_METHOD(Spoofchecker, setAllowedLocales)
+PHP_METHOD(Spoofchecker, setAllowedLocales)
 {
 	zend_string *locales;
 	SPOOFCHECKER_METHOD_INIT_VARS;
@@ -117,7 +117,7 @@ U_CFUNC PHP_METHOD(Spoofchecker, setAllowedLocales)
 /* }}} */

 /* {{{ Set the checks to run */
-U_CFUNC PHP_METHOD(Spoofchecker, setChecks)
+PHP_METHOD(Spoofchecker, setChecks)
 {
 	zend_long checks;
 	SPOOFCHECKER_METHOD_INIT_VARS;
@@ -139,7 +139,7 @@ U_CFUNC PHP_METHOD(Spoofchecker, setChecks)

 /* TODO Document this method on PHP.net */
 /* {{{ Set the loosest restriction level allowed for strings. */
-U_CFUNC PHP_METHOD(Spoofchecker, setRestrictionLevel)
+PHP_METHOD(Spoofchecker, setRestrictionLevel)
 {
 	zend_long level;
 	SPOOFCHECKER_METHOD_INIT_VARS;
@@ -166,7 +166,7 @@ U_CFUNC PHP_METHOD(Spoofchecker, setRestrictionLevel)
 }
 /* }}} */

-U_CFUNC PHP_METHOD(Spoofchecker, setAllowedChars)
+PHP_METHOD(Spoofchecker, setAllowedChars)
 {
 	zend_string *pattern;
 	UChar *upattern = NULL;
@@ -272,7 +272,7 @@ static zend_string *spoofchecker_skeleton(Spoofchecker_object *co, zend_string *
 /* }}} */

 /* {{{ Get the confusable skeleton for an identifier */
-U_CFUNC PHP_METHOD(Spoofchecker, getSkeleton)
+PHP_METHOD(Spoofchecker, getSkeleton)
 {
 	zend_string *string;
 	SPOOFCHECKER_METHOD_INIT_VARS;
@@ -298,7 +298,7 @@ U_CFUNC PHP_METHOD(Spoofchecker, getSkeleton)

 #if U_ICU_VERSION_MAJOR_NUM >= 74
 /* {{{ Get the confusable skeleton for an identifier in a given text direction */
-U_CFUNC PHP_METHOD(Spoofchecker, getBidiSkeleton)
+PHP_METHOD(Spoofchecker, getBidiSkeleton)
 {
 	zend_long direction;
 	zend_string *string;
@@ -329,7 +329,7 @@ U_CFUNC PHP_METHOD(Spoofchecker, getBidiSkeleton)
 /* }}} */

 /* {{{ Checks if a given text contains any confusable characters, for a given text direction */
-U_CFUNC PHP_METHOD(Spoofchecker, areBidiConfusable)
+PHP_METHOD(Spoofchecker, areBidiConfusable)
 {
 	uint32_t ret = 0;
 	zend_long direction;