โปรเจ็กต์นี้สนับสนุนฟีเจอร์ที่พบใน PHP เวอร์ชันล่าสุด และมอบเลเยอร์ความเข้ากันได้สำหรับส่วนขยายและฟังก์ชันบางอย่าง มีวัตถุประสงค์เพื่อใช้เมื่อต้องการพกพาข้ามเวอร์ชัน PHP และส่วนขยายได้
Polyfills มีไว้เพื่อ:
apcu เมื่อติดตั้งส่วนขยาย apc ดั้งเดิมctype เมื่อคอมไพล์ PHP โดยไม่มี ctypembstring และ iconv ;uuid ;MessageFormatter และฟังก์ชัน msgfmt_format_messageNormalizer และฟังก์ชัน 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_failureidn_to_ascii และ idn_to_utf8Binary ที่จะใช้เมื่อจำเป็นต้องมีความเข้ากันได้กับ mbstring.func_overloadspl_object_id และ stream_isatty ที่นำมาใช้ใน PHP 7.2;mb_ord , mb_chr และ mb_scrub เปิดตัวใน PHP 7.2 จากส่วนขยาย mbstringsapi_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_utf8symfony/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