โปรเจ็กต์นี้สนับสนุนฟีเจอร์ที่พบใน PHP เวอร์ชันล่าสุด และมอบเลเยอร์ความเข้ากันได้สำหรับส่วนขยายและฟังก์ชันบางอย่าง มีวัตถุประสงค์เพื่อใช้เมื่อต้องการพกพาข้ามเวอร์ชัน PHP และส่วนขยายได้
Polyfills มีไว้เพื่อ:
apcu
เมื่อติดตั้งส่วนขยาย apc
ดั้งเดิมctype
เมื่อคอมไพล์ PHP โดยไม่มี ctypembstring
และ iconv
;uuid
;MessageFormatter
และฟังก์ชัน msgfmt_format_message
Normalizer
และฟังก์ชัน grapheme_*
;utf8_encode
และ utf8_decode
จากส่วนขยาย xml
หรือแกน PHP-7.2Collator
, NumberFormatter
, Locale
และ IntlDateFormatter
จำกัด อยู่ที่ "en" localeintl_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
สำหรับการใช้ฟังก์ชัน ctypesymfony/polyfill-php54
สำหรับการใช้ฟังก์ชัน PHP 5.4symfony/polyfill-php55
สำหรับการใช้ฟังก์ชัน PHP 5.5symfony/polyfill-php56
สำหรับการใช้ฟังก์ชัน PHP 5.6symfony/polyfill-php70
สำหรับการใช้ฟังก์ชัน PHP 7.0symfony/polyfill-php71
สำหรับการใช้ฟังก์ชัน PHP 7.1symfony/polyfill-php72
สำหรับการใช้ฟังก์ชัน PHP 7.2symfony/polyfill-php73
สำหรับการใช้ฟังก์ชัน PHP 7.3symfony/polyfill-php74
สำหรับการใช้ฟังก์ชัน PHP 7.4symfony/polyfill-php80
สำหรับการใช้ฟังก์ชัน PHP 8.0symfony/polyfill-php81
สำหรับการใช้ฟังก์ชัน PHP 8.1symfony/polyfill-php82
สำหรับการใช้ฟังก์ชัน PHP 8.2symfony/polyfill-php83
สำหรับการใช้ฟังก์ชัน PHP 8.3symfony/polyfill-php84
สำหรับการใช้ฟังก์ชัน PHP 8.4symfony/polyfill-iconv
สำหรับการใช้ฟังก์ชัน iconvsymfony/polyfill-intl-grapheme
สำหรับการใช้ฟังก์ชัน grapheme_*
symfony/polyfill-intl-idn
สำหรับการใช้ฟังก์ชัน idn_to_ascii
และ idn_to_utf8
symfony/polyfill-intl-icu
สำหรับการใช้ฟังก์ชันและคลาส intlsymfony/polyfill-intl-messageformatter
สำหรับการใช้ intl messageformattersymfony/polyfill-intl-normalizer
สำหรับการใช้ intl Normalizersymfony/polyfill-mbstring
สำหรับการใช้ฟังก์ชัน mbstringsymfony/polyfill-util
สำหรับการใช้ตัวช่วยยูทิลิตี้ polyfillsymfony/polyfill-uuid
สำหรับการใช้ฟังก์ชัน uuid_*
การร้องขอ symfony/polyfill
โดยตรงจะป้องกันไม่ให้ Composer แบ่งปัน polyfills อย่างถูกต้องในกราฟอ้างอิง ดังนั้นจึงมีแนวโน้มที่จะติดตั้งโค้ดมากกว่าที่จำเป็น
แพ็คเกจนี้ออกแบบมาสำหรับการบรรจุโพลีฟิลดิ้งคุณภาพสูงและมีต้นทุนการผลิตต่ำ
มันเพิ่มคำสั่ง require
น้ำหนักเบาเพียงไม่กี่รายการให้กับกระบวนการบูตสแตรปเพื่อรองรับโพลีฟิลทั้งหมด การใช้งานจะถูกโหลดตามความต้องการเมื่อจำเป็นระหว่างการเรียกใช้โค้ด
หากโปรเจ็กต์ของคุณต้องการเวอร์ชัน PHP ขั้นต่ำ ขอแนะนำให้เพิ่มโพลีฟิลสำหรับเวอร์ชัน 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