このプロジェクトは、最新の 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
拡張機能から導入された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 バージョンをアップグレードするか、不足している拡張機能をインストールすることを強くお勧めします。このポリフィルは、他に良い選択肢がない場合、または移植性が要件となる場合にのみ使用してください。
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
、symfony/polyfill-intl-grapheme
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
polyfill ユーティリティ ヘルパーを使用します。uuid_*
関数を使用するためのsymfony/polyfill-uuid
、 symfony/polyfill
直接要求すると、Composer が依存関係グラフでポリフィルを正しく共有できなくなります。そのため、必要以上のコードがインストールされる可能性があります。
このパッケージは、低オーバーヘッドと高品質のポリフィル用に設計されています。
すべてのポリフィルをサポートするために、いくつかの軽量のrequire
ステートメントをブートストラップ プロセスに追加するだけです。実装は、コードの実行中に必要に応じてオンデマンドでロードされます。
プロジェクトに最小 PHP バージョンが必要な場合は、それより低い PHP バージョン用のポリフィルをcomposer.json
のreplace
セクションに追加することをお勧めします。これにより、これらのポリフィルはプロジェクトの一部ではなくなるため、オーバーヘッドが削除されます。必要な拡張機能のポリフィルについても同じことができます。
プロジェクトに php 7.0 が必要で、mb 拡張子が必要な場合、置換セクションは次のようになります。
{
"replace" : {
"symfony/polyfill-php54" : " * " ,
"symfony/polyfill-php55" : " * " ,
"symfony/polyfill-php56" : " * " ,
"symfony/polyfill-php70" : " * " ,
"symfony/polyfill-mbstring" : " * "
}
}
ポリフィルはネイティブ実装と並行して単体テストされるため、長期的には機能と動作の同等性が証明され、適用されます。
このライブラリは MIT ライセンスに基づいてリリースされています。