이 프로젝트는 최신 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 라이센스에 따라 배포됩니다.