このプロジェクトは、最新の 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 ライセンスに基づいてリリースされています。