이 프로젝트는 최신 PHP 버전의 기능을 백포트하고 일부 확장 및 기능에 대한 호환성 레이어를 제공합니다. 이는 PHP 버전 및 확장에 대한 이식성이 필요할 때 사용하기 위한 것입니다.
폴리필은 다음을 위해 제공됩니다.
apc 확장이 설치된 경우 apcu 확장;ctype 확장;mbstring 및 iconv 확장;uuid 확장자;MessageFormatter 클래스와 msgfmt_format_message 함수;Normalizer 클래스 및 grapheme_* 함수;xml 확장 또는 PHP-7.2 코어의 utf8_encode 및 utf8_decode 함수;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 함수mbstring.func_overload 와의 호환성이 필요할 때 사용할 Binary 유틸리티 클래스입니다.spl_object_id 및 stream_isatty 함수;mbstring 확장에서 PHP 7.2에 도입된 mb_ord , mb_chr 및 mb_scrub 함수sapi_windows_vt100_support 함수(Windows 전용)PHP_FLOAT_* 상수;PHP_OS_FAMILY 상수;is_countable 함수;array_key_first 및 array_key_last 함수;hrtime 함수;JsonException 클래스;get_mangled_object_vars , mb_str_split 및 password_algos 함수;fdiv 함수;get_debug_type 함수;preg_last_error_msg 함수;str_contains 함수;str_starts_with 및 str_ends_with 함수;ValueError 클래스;UnhandledMatchError 클래스;FILTER_VALIDATE_BOOL 상수;get_resource_id 함수;Attribute 클래스;Stringable 인터페이스;PhpToken 클래스;array_is_list 함수;enum_exists 함수;MYSQLI_REFRESH_REPLICA 상수;ReturnTypeWillChange 속성;CURLStringFile 클래스(그러나 PHP >= 7.4가 사용되는 경우에만)AllowDynamicProperties 속성;SensitiveParameter 속성;SensitiveParameterValue 클래스;RandomEngine 인터페이스;RandomCryptoSafeEngine 인터페이스;RandomEngineSecure 클래스(더 많은 엔진을 보려면 arokettu/random-polyfill을 확인하세요)odbc_connection_string_is_quoted 함수;odbc_connection_string_should_quote 함수;odbc_connection_string_quote 함수;ini_parse_quantity 함수;json_validate 함수;Override 속성;mb_str_pad 함수;ldap_exop_sync 함수;ldap_connect_wallet 함수;stream_context_set_options 함수;str_increment 및 str_decrement 함수;Date*Exception/Error 클래스;SQLite3Exception 클래스;mb_ucfirst 및 mb_lcfirst 함수;array_find , array_find_key , array_any 및 array_all 함수;Deprecated 속성;mb_trim , mb_ltrim 및 mb_rtrim 함수;CURL_HTTP_VERSION_3 및 CURL_HTTP_VERSION_3ONLY 상수는 PHP 8.4에 도입되었습니다.가능하면 PHP 버전을 업그레이드하거나 누락된 확장 기능을 설치하는 것이 좋습니다. 이 폴리필은 더 나은 선택이 없거나 이식성이 요구되는 경우에만 사용해야 합니다.
PHP5와 PHP7 사이에 이식 가능한 코드를 작성하려면 다음과 같은 주의가 필요합니다.
*Error 예외는 Exception 전에 포착되어야 합니다.error_clear_last() 호출한 후 $e = error_get_last() 의 결과는 null !== $e 대신 isset($e['message'][0]) 사용하여 확인되어야 합니다. Composer를 사용하여 종속성을 관리할 때는 symfony/polyfill 패키지가 require 하지 않고 독립형 패키지가 필요합니다.
apcu_* 함수를 사용하기 위한 symfony/polyfill-apcu ,symfony/polyfill-ctype ,symfony/polyfill-php54 ,symfony/polyfill-php55 ,symfony/polyfill-php56 ,symfony/polyfill-php70 ,symfony/polyfill-php71 ,symfony/polyfill-php72 ,symfony/polyfill-php73 ,symfony/polyfill-php74 ,symfony/polyfill-php80 ,symfony/polyfill-php81 ,symfony/polyfill-php82 ,symfony/polyfill-php83 ,symfony/polyfill-php84 ,symfony/polyfill-iconv ,grapheme_* 함수를 사용하기 위한 symfony/polyfill-intl-grapheme ,idn_to_ascii 및 idn_to_utf8 함수를 사용하기 위한 symfony/polyfill-intl-idn ,symfony/polyfill-intl-icu ,symfony/polyfill-intl-messageformatter ,symfony/polyfill-intl-normalizer ,symfony/polyfill-mbstring ,symfony/polyfill-util .uuid_* 함수를 사용하기 위한 symfony/polyfill-uuid , symfony/polyfill 직접 요구하면 Composer가 종속성 그래프에서 폴리필을 올바르게 공유하지 못하게 됩니다. 따라서 필요한 것보다 더 많은 코드를 설치할 가능성이 높습니다.
이 패키지는 낮은 오버헤드와 고품질 폴리필을 위해 설계되었습니다.
모든 폴리필을 지원하기 위해 부트스트랩 프로세스에 몇 가지 간단한 require 문만 추가합니다. 그런 다음 코드 실행 중에 필요할 때 구현이 요청 시 로드됩니다.
프로젝트에 최소 PHP 버전이 필요한 경우 composer.json 의 replace 섹션에 낮은 PHP 버전에 대한 폴리필을 추가하는 것이 좋습니다. 이렇게 하면 폴리필이 더 이상 프로젝트의 일부가 아니므로 오버헤드가 제거됩니다. 필요한 확장에 대한 폴리필에 대해서도 동일한 작업을 수행할 수 있습니다.
프로젝트에 PHP 7.0이 필요하고 mb 확장자가 필요한 경우 교체 섹션은 다음과 같습니다.
{
"replace" : {
"symfony/polyfill-php54" : " * " ,
"symfony/polyfill-php55" : " * " ,
"symfony/polyfill-php56" : " * " ,
"symfony/polyfill-php70" : " * " ,
"symfony/polyfill-mbstring" : " * "
}
}Polyfill은 기능 및 동작 패리티가 장기적으로 입증되고 시행될 수 있도록 기본 구현과 함께 단위 테스트를 거칩니다.
이 라이브러리는 MIT 라이센스에 따라 배포됩니다.