php7の非互換性について詳しく解説
非互換性
1. foreach は内部配列ポインターを変更しなくなりました
PHP7 より前では、配列が foreach を介して反復されると、配列ポインターが移動していました。今後、これは当てはまらなくなります。以下のコードを参照してください。
<?php $array = [0, 1, 2]; foreach ($array as &$val) { var_dump(current($array)); }
PHP5 出力:
int(1)
int(2)
bool(false)
PHP7 出力:
int(0)
int(0)
int(0)
2、参照による foreach走査時の反復機能の向上
参照を使用して配列を走査する場合、foreach は反復中の変更をより適切に追跡できるようになりました。たとえば、反復中に反復値を配列に追加するには、次のコードを参照してください:
<?php $array = [0]; foreach ($array as &$val) { var_dump($val); $array[1] = 1; }
PHP5 出力:
int(0)
PHP7 出力:
int(0)
int(1)
3、16 進数の文字列は数値とみなされなくなりました
含まれる 16 進数の文字列は数値とみなされなくなりました
<?php var_dump("0x123" == "291"); var_dump(is_numeric("0x123")); var_dump("0xe" + "0x1"); var_dump(substr("foo", "0x1"));
PHP5 出力:
bool(true)
bool(true)
int(15)
string(2) "oo"
PHP7 出力:
bool(false)
bool(false)
int(0)
注意: /tmp/test.php の 5 行目で整形式でない数値が見つかりました
string (3) "foo"
4. PHP7 で削除された関数
削除された関数のリストは次のとおりです:
call_user_func() および call_user_func_array() は、PHP 4.1.0 から非推奨になりました。
非推奨の mcrypt_generic_end() 関数は削除されました。代わりに mcrypt_generic_deinit() を使用してください。
非推奨の mcrypt_ecb()、mcrypt_cbc()、mcrypt_cfb()、および mcrypt_ofb() 関数は削除されました。
set_magic_quotes_runtime() とそのエイリアス magic_quotes_runtime() は PHP 5.3.0 で非推奨となり、マジック クオートの非推奨により PHP 5.4.0 では機能も失いました。
廃止された set_socket_blocking() 関数は削除されました。代わりに stream_set_blocking() を使用してください。
dl() は PHP-FPM では使用できなくなりましたが、CLI および埋め込み SAPI では引き続き使用できます。
GD ライブラリ内の次の関数が削除されました: imagepsbbox()、imagepsencodefont()、imagepsextendfont()、imagepsfreefont()、imagepsloadfont()、imagepsslantfont()、imagepstext()
設定ファイル php.ini で、 always_populate_raw_post_data、asp_tags、xsl.security_prefs は削除されました。
5. new 演算子によって作成されたオブジェクトは、参照によって変数に代入できません。
<?php class C {} $c =& new C;
PHP5 の出力:
の代入。参照による new の戻り値は、/tmp/test.php の 3 行目で非推奨になりました
PHP7 出力:
解析エラー: 構文エラー、/tmp/test.php の 3 行目で予期しない 'new' (T_NEW) が発生しました
6. ASP の削除とスクリプト PHP タグ
ASP のようなタグを使用し、PHP コードを区別するためのスクリプト タグが削除されました。 影響を受けるタグは次のとおりです: <% %>、<%= %>、
7. 通話中不一致のコンテキストで静的に非静的メソッドは PHP 5.6 で非推奨になりましたが、PHP 7.0 では、呼び出されたメソッドで未定義の $this 変数が発生し、この動作が非推奨であるという警告が表示されます。
<?php class A { public function test() { var_dump($this); } } // 注意:并没有从类 A 继承 class B { public function callNonStaticMethodOfA() { A::test(); } } (new B)->callNonStaticMethodOfA();
PHP5 出力:
非推奨: /tmp/test.php の 8 行目で互換性のないコンテキストから $this を想定しているため、非静的メソッド A::test() を静的に呼び出すべきではありません
object(B)#1 (0) {
}
PHP7 出力:
非推奨: 非静的メソッド A::test() は /tmp/test.php の 8 行目で静的に呼び出すべきではありません
注意: 未定義の変数: / にありますtmp/test.phpの3行目NULL
8. 値がオーバーフローすると内部関数が失敗します
浮動小数点数を整数に変換する際、浮動小数点数が大きすぎると表現できません。この場合、以前のバージョンでは、内部関数はエラーを発生させずに整数を直接切り捨てていました。 PHP 7.0 では、これが発生すると、E_WARNING エラーが発生し、NULL が返されます。
9. JSON 拡張子が JSOND に置き換えられました
JSON 拡張子が JSOND 拡張子に置き換えられました。 数値の処理に関して注意すべき点は 2 つあります。まず、数値をピリオド (.) で終わらせることはできません (たとえば、値 34. は 34.0 または 34 と記述する必要があります)。 次に、科学表記法を使用して値を表現する場合、e の前にピリオド (.) を付けることはできません (たとえば、3.e3 は 3.0e3 または 3e3 と記述する必要があります)
10。INI ファイル内の # コメント形式。は削除されました
ファイル INI ファイルでは、# で始まるコメント行はサポートされなくなりました。コメントを示すには (セミコロン) を使用してください。 この変更は、php.ini と、parse_ini_file() および parse_ini_string() 関数で処理されるファイルに適用されます。
11. $HTTP_RAW_POST_DATA は削除されました
$HTTP_RAW_POST_DATA 変数は提供されなくなりました。 代わりに php://input を使用してください。
12. Yield が右結合演算子に変更されました
在使用 yield 关键字的时候,不再需要括号, 并且它变更为右联接操作符,其运算符优先级介于 print 和 => 之间。 这可能导致现有代码的行为发生改变。可以通过使用括号来消除歧义。
<?php echo yield -1; // 在之前版本中会被解释为: echo (yield) - 1; // 现在,它将被解释为: echo yield (-1); yield $foo or die; // 在之前版本中会被解释为: yield ($foo or die); // 现在,它将被解释为: (yield $foo) or die;
以上がphp7の非互換性について詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

このチュートリアルでは、PHPを使用してXMLドキュメントを効率的に処理する方法を示しています。 XML(拡張可能なマークアップ言語)は、人間の読みやすさとマシン解析の両方に合わせて設計された多用途のテキストベースのマークアップ言語です。一般的にデータストレージに使用されます

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

文字列は、文字、数字、シンボルを含む一連の文字です。このチュートリアルでは、さまざまな方法を使用してPHPの特定の文字列内の母音の数を計算する方法を学びます。英語の母音は、a、e、i、o、u、そしてそれらは大文字または小文字である可能性があります。 母音とは何ですか? 母音は、特定の発音を表すアルファベットのある文字です。大文字と小文字など、英語には5つの母音があります。 a、e、i、o、u 例1 入力:string = "tutorialspoint" 出力:6 説明する 文字列「TutorialSpoint」の母音は、u、o、i、a、o、iです。合計で6元があります

システムが再起動した後、UnixSocketの権限を自動的に設定する方法。システムが再起動するたびに、UnixSocketの許可を変更するために次のコマンドを実行する必要があります:sudo ...

静的結合(静的::) PHPで後期静的結合(LSB)を実装し、クラスを定義するのではなく、静的コンテキストで呼び出しクラスを参照できるようにします。 1)解析プロセスは実行時に実行されます。2)継承関係のコールクラスを検索します。3)パフォーマンスオーバーヘッドをもたらす可能性があります。

エラーの原因とソリューションPECLを使用してDocker環境に拡張機能をインストールする場合、Docker環境を使用するときに、いくつかの頭痛に遭遇します...
