يدعم هذا المشروع الميزات الموجودة في أحدث إصدارات PHP ويوفر طبقات توافق لبعض الامتدادات والوظائف. الغرض منه هو استخدامه عند الرغبة في إمكانية النقل عبر إصدارات PHP وملحقاتها.
يتم توفير Polyfills لـ:
apcu
عند تثبيت ملحق apc
القديم؛ctype
عندما يتم تجميع PHP بدون ctype؛mbstring
و iconv
؛uuid
؛MessageFormatter
ووظائف msgfmt_format_message
؛Normalizer
ووظائف grapheme_*
؛utf8_encode
و utf8_decode
من ملحق xml
أو PHP-7.2 الأساسي؛Collator
و NumberFormatter
و Locale
و IntlDateFormatter
، والتي تقتصر على اللغة "en"؛intl_error_name
و intl_get_error_code
و intl_get_error_message
و intl_is_failure
؛idn_to_ascii
و idn_to_utf8
؛Binary
التي سيتم استخدامها عندما يكون التوافق مع mbstring.func_overload
مطلوبًا؛spl_object_id
و stream_isatty
المقدمة في PHP 7.2؛mb_ord
و mb_chr
و mb_scrub
المقدمة في PHP 7.2 من ملحق mbstring
sapi_windows_vt100_support
(Windows فقط) المقدمة في PHP 7.2؛PHP_FLOAT_*
المقدم في PHP 7.2؛PHP_OS_FAMILY
المقدم في PHP 7.2؛is_countable
المقدمة في PHP 7.3؛array_key_first
و array_key_last
المقدمتان في PHP 7.3؛hrtime
المقدمة في PHP 7.3؛JsonException
المقدمة في PHP 7.3؛get_mangled_object_vars
و mb_str_split
و password_algos
المقدمة في PHP 7.4؛fdiv
المقدمة في PHP 8.0؛get_debug_type
المقدمة في PHP 8.0؛preg_last_error_msg
المقدمة في PHP 8.0؛str_contains
المقدمة في PHP 8.0؛str_starts_with
و str_ends_with
المقدمة في PHP 8.0؛ValueError
المقدمة في PHP 8.0؛UnhandledMatchError
المقدمة في PHP 8.0؛FILTER_VALIDATE_BOOL
المقدم في PHP 8.0؛get_resource_id
المقدمة في PHP 8.0؛Attribute
المقدمة في PHP 8.0؛Stringable
المقدمة في PHP 8.0؛PhpToken
التي تم تقديمها في PHP 8.0 عند تمكين ملحق الرمز المميز؛array_is_list
المقدمة في PHP 8.1؛enum_exists
المقدمة في PHP 8.1؛MYSQLI_REFRESH_REPLICA
المقدم في PHP 8.1؛ReturnTypeWillChange
المقدمة في PHP 8.1؛CURLStringFile
المقدمة في PHP 8.1 (ولكن فقط إذا تم استخدام PHP >= 7.4)؛AllowDynamicProperties
المقدمة في PHP 8.2؛SensitiveParameter
المقدمة في PHP 8.2؛SensitiveParameterValue
المقدمة في PHP 8.2؛RandomEngine
المقدمة في PHP 8.2؛RandomCryptoSafeEngine
المقدمة في PHP 8.2؛RandomEngineSecure
المقدمة في PHP 8.2 (راجع arokettu/random-polyfill لمزيد من المحركات)؛odbc_connection_string_is_quoted
المقدمة في PHP 8.2؛odbc_connection_string_should_quote
المقدمة في PHP 8.2؛odbc_connection_string_quote
المقدمة في PHP 8.2؛ini_parse_quantity
المقدمة في PHP 8.2؛json_validate
المقدمة في PHP 8.3؛Override
المقدمة في PHP 8.3؛mb_str_pad
المقدمة في PHP 8.3؛ldap_exop_sync
المقدمة في PHP 8.3؛ldap_connect_wallet
المقدمة في PHP 8.3؛stream_context_set_options
المقدمة في PHP 8.3؛str_increment
و str_decrement
المقدمة في PHP 8.3؛Date*Exception/Error
المقدمة في PHP 8.3؛SQLite3Exception
المقدمة في PHP 8.3؛mb_ucfirst
و mb_lcfirst
المقدمتان في PHP 8.4؛array_find
و array_find_key
و array_any
و array_all
المقدمة في PHP 8.4؛Deprecated
المقدمة في PHP 8.4؛mb_trim
و mb_ltrim
و mb_rtrim
المقدمة في PHP 8.4؛CURL_HTTP_VERSION_3
و CURL_HTTP_VERSION_3ONLY
المقدمة في PHP 8.4؛يوصى بشدة بترقية إصدار PHP الخاص بك و/أو تثبيت الملحقات المفقودة كلما أمكن ذلك. يجب استخدام هذه الحشوة المتعددة فقط عندما لا يكون هناك خيار أفضل أو عندما تكون إمكانية النقل مطلوبة.
لكتابة تعليمات برمجية محمولة بين PHP5 وPHP7، يجب اتخاذ بعض الحذر:
*Error
قبل Exception
;error_clear_last()
، يجب التحقق من نتيجة $e = error_get_last()
باستخدام isset($e['message'][0])
بدلاً من null !== $e
. عند استخدام Composer لإدارة تبعياتك، لا يجب require
حزمة symfony/polyfill
، بل إلى الحزمة المستقلة:
symfony/polyfill-apcu
لاستخدام وظائف apcu_*
،symfony/polyfill-ctype
لاستخدام وظائف ctype،symfony/polyfill-php54
لاستخدام وظائف PHP 5.4،symfony/polyfill-php55
لاستخدام وظائف PHP 5.5،symfony/polyfill-php56
لاستخدام وظائف PHP 5.6،symfony/polyfill-php70
لاستخدام وظائف PHP 7.0،symfony/polyfill-php71
لاستخدام وظائف PHP 7.1،symfony/polyfill-php72
لاستخدام وظائف PHP 7.2،symfony/polyfill-php73
لاستخدام وظائف PHP 7.3،symfony/polyfill-php74
لاستخدام وظائف PHP 7.4،symfony/polyfill-php80
لاستخدام وظائف PHP 8.0،symfony/polyfill-php81
لاستخدام وظائف PHP 8.1،symfony/polyfill-php82
لاستخدام وظائف PHP 8.2،symfony/polyfill-php83
لاستخدام وظائف PHP 8.3،symfony/polyfill-php84
لاستخدام وظائف PHP 8.4،symfony/polyfill-iconv
لاستخدام وظائف Iconv،symfony/polyfill-intl-grapheme
لاستخدام وظائف grapheme_*
،symfony/polyfill-intl-idn
لاستخدام الدالتين idn_to_ascii
و idn_to_utf8
،symfony/polyfill-intl-icu
لاستخدام الدوال والفئات intl،symfony/polyfill-intl-messageformatter
لاستخدام تنسيق الرسالة intl،symfony/polyfill-intl-normalizer
لاستخدام أداة التسوية الدولية،symfony/polyfill-mbstring
لاستخدام وظائف mbstring،symfony/polyfill-util
لاستخدام الأدوات المساعدة polyfill.symfony/polyfill-uuid
لاستخدام وظائف uuid_*
، إن طلب symfony/polyfill
مباشرة سيمنع الملحن من مشاركة polyfills بشكل صحيح في الرسوم البيانية التبعية. على هذا النحو، من المحتمل أن يقوم بتثبيت تعليمات برمجية أكثر مما هو مطلوب.
تم تصميم هذه الحزمة من أجل حشو بوليستر منخفض الجودة وعالي الجودة.
فهو يضيف فقط عددًا قليلًا من عبارات require
خفيفة الوزن إلى عملية التمهيد لدعم جميع عمليات التعبئة المتعددة. يتم بعد ذلك تحميل عمليات التنفيذ عند الطلب عند الحاجة أثناء تنفيذ التعليمات البرمجية.
إذا كان مشروعك يتطلب الحد الأدنى من إصدار PHP، فمن المستحسن إضافة ملفات polyfills لإصدارات PHP الأقل إلى قسم replace
في composer.json
الخاص بك. يؤدي هذا إلى إزالة أي حمل إضافي من هذه الحشوات المتعددة لأنها لم تعد جزءًا من مشروعك. يمكن فعل الشيء نفسه بالنسبة للحشوات المتعددة للملحقات التي تحتاجها.
إذا كان مشروعك يتطلب PHP 7.0، ويحتاج إلى الامتداد mb، فسيبدو قسم الاستبدال كما يلي:
{
"replace" : {
"symfony/polyfill-php54" : " * " ,
"symfony/polyfill-php55" : " * " ,
"symfony/polyfill-php56" : " * " ,
"symfony/polyfill-php70" : " * " ,
"symfony/polyfill-mbstring" : " * "
}
}
يتم اختبار Polyfills جنبًا إلى جنب مع تنفيذها الأصلي بحيث يمكن إثبات تكافؤ الميزات والسلوك وتنفيذه على المدى الطويل.
تم إصدار هذه المكتبة بموجب ترخيص MIT.