検索
ホームページバックエンド開発PHPチュートリアルphp7の非互換性について詳しく解説

php7の非互換性について詳しく解説

Jun 27, 2017 am 10:10 AM
iephpphp7互換性がありませんについてコンテンツ

非互換性

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 サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
PHPの目的:動的なWebサイトの構築PHPの目的:動的なWebサイトの構築Apr 15, 2025 am 12:18 AM

PHPは動的なWebサイトを構築するために使用され、そのコア関数には次のものが含まれます。1。データベースに接続することにより、動的コンテンツを生成し、リアルタイムでWebページを生成します。 2。ユーザーのインタラクションを処理し、提出をフォームし、入力を確認し、操作に応答します。 3.セッションとユーザー認証を管理して、パーソナライズされたエクスペリエンスを提供します。 4.パフォーマンスを最適化し、ベストプラクティスに従って、ウェブサイトの効率とセキュリティを改善します。

PHP:データベースとサーバー側のロジックの処理PHP:データベースとサーバー側のロジックの処理Apr 15, 2025 am 12:15 AM

PHPはMySQLIおよびPDO拡張機能を使用して、データベース操作とサーバー側のロジック処理で対話し、セッション管理などの関数を介してサーバー側のロジックを処理します。 1)MySQLIまたはPDOを使用してデータベースに接続し、SQLクエリを実行します。 2)セッション管理およびその他の機能を通じて、HTTPリクエストとユーザーステータスを処理します。 3)トランザクションを使用して、データベース操作の原子性を確保します。 4)SQLインジェクションを防ぎ、例外処理とデバッグの閉鎖接続を使用します。 5)インデックスとキャッシュを通じてパフォーマンスを最適化し、読みやすいコードを書き、エラー処理を実行します。

PHPでのSQL注入をどのように防止しますか? (準備された声明、PDO)PHPでのSQL注入をどのように防止しますか? (準備された声明、PDO)Apr 15, 2025 am 12:15 AM

PHPで前処理ステートメントとPDOを使用すると、SQL注入攻撃を効果的に防ぐことができます。 1)PDOを使用してデータベースに接続し、エラーモードを設定します。 2)準備方法を使用して前処理ステートメントを作成し、プレースホルダーを使用してデータを渡し、メソッドを実行します。 3)結果のクエリを処理し、コードのセキュリティとパフォーマンスを確保します。

PHPおよびPython:コードの例と比較PHPおよびPython:コードの例と比較Apr 15, 2025 am 12:07 AM

PHPとPythonには独自の利点と短所があり、選択はプロジェクトのニーズと個人的な好みに依存します。 1.PHPは、大規模なWebアプリケーションの迅速な開発とメンテナンスに適しています。 2。Pythonは、データサイエンスと機械学習の分野を支配しています。

アクション中のPHP:実際の例とアプリケーションアクション中のPHP:実際の例とアプリケーションApr 14, 2025 am 12:19 AM

PHPは、電子商取引、コンテンツ管理システム、API開発で広く使用されています。 1)eコマース:ショッピングカート機能と支払い処理に使用。 2)コンテンツ管理システム:動的コンテンツの生成とユーザー管理に使用されます。 3)API開発:RESTFUL API開発とAPIセキュリティに使用されます。パフォーマンスの最適化とベストプラクティスを通じて、PHPアプリケーションの効率と保守性が向上します。

PHP:インタラクティブなWebコンテンツを簡単に作成しますPHP:インタラクティブなWebコンテンツを簡単に作成しますApr 14, 2025 am 12:15 AM

PHPにより、インタラクティブなWebコンテンツを簡単に作成できます。 1)HTMLを埋め込んでコンテンツを動的に生成し、ユーザー入力またはデータベースデータに基づいてリアルタイムで表示します。 2)プロセスフォームの提出と動的出力を生成して、XSSを防ぐためにHTMLSPECIALCHARSを使用していることを確認します。 3)MySQLを使用してユーザー登録システムを作成し、Password_HashおよびPreprocessingステートメントを使用してセキュリティを強化します。これらの手法を習得すると、Web開発の効率が向上します。

PHPとPython:2つの一般的なプログラミング言語を比較しますPHPとPython:2つの一般的なプログラミング言語を比較しますApr 14, 2025 am 12:13 AM

PHPとPythonにはそれぞれ独自の利点があり、プロジェクトの要件に従って選択します。 1.PHPは、特にWebサイトの迅速な開発とメンテナンスに適しています。 2。Pythonは、データサイエンス、機械学習、人工知能に適しており、簡潔な構文を備えており、初心者に適しています。

PHPの永続的な関連性:それはまだ生きていますか?PHPの永続的な関連性:それはまだ生きていますか?Apr 14, 2025 am 12:12 AM

PHPは依然として動的であり、現代のプログラミングの分野で重要な位置を占めています。 1)PHPのシンプルさと強力なコミュニティサポートにより、Web開発で広く使用されています。 2)その柔軟性と安定性により、Webフォーム、データベース操作、ファイル処理の処理において顕著になります。 3)PHPは、初心者や経験豊富な開発者に適した、常に進化し、最適化しています。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

SublimeText3 Mac版

SublimeText3 Mac版

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

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール