検索
ホームページバックエンド開発PHPチュートリアルphp die() と exit() の違いの詳細な例

PHP の die() と exit() の本当の違いは何ですか? die はメモリを終了して解放することを意味し、exit はメモリを終了するが解放しないことを意味することをバイドゥで発見しました。これは本当に当てはまりますか?

die 関数と exit 関数の違いをオンラインで検索すると、ほとんどの「標準的な回答」では、die は終了してメモリを解放し、exit は終了するがメモリは解放しないと述べています。

この説明は明らかに間違っています。PHP マニュアルにはすでに「die — exit() と同等です。この言語構​​造は exit() と同等です。」と記載されています。この 2 つは単なるエイリアスであり、それ以外はまったく同じです。

しかし、私はまだ興味があったので、PHP がこの「エイリアス」をどのように処理するかを確認するためにソース コードから手がかりを探すことにしました。

まず、明確にしておきますが、Die と exit は両方とも「言語構造体」であり、関数ではありません。また、戻り値のあるものは関数であり、戻り値のないものは関数であると主張する人もいます。多くの初心者は言語の構造を理解できません。平たく言えば、言語の構造は文法そのものの記号として理解できるということです。 +、-、*、/ なども言語構造であり、if、else、for、while などもすべて言語構造です。文法自体の一部です。どの言語にもこれらの要素は含まれます。これは、コンピューターが + を見たときに、それを追加する必要があるとは考えないためです。これには、コンパイラがそれをマシンコード (CPU が認識できる命令セット) に変換する必要があります。

PHP がソース コードを実行するときのプロセス全体は、まずソース コード内の echo や if などの言語構造を、zend_ language_scanner.l で定義されている T_ECHO や T_IF などのトークンに変換し、ソース コード内のスペースを削除します。プログラム ロジックと関係のないこれらの文字をコメント アウトします。 、いくつかの短い式が形成されます。これが字句解析の段階です。これらのトークンは、zend_vm_opcodes.h で定義されている操作コードに変換されます。次に、これらの操作コードを 1 つずつ実行します。

上記は、PHPのコンパイルと実行のプロセス、および言語構造の定義を大まかに説明しています。本題に入りましょう。

PHP には、implode や join などのエイリアス関数が多数あることも覚えておく必要があります。エイリアス関数にしても、エイリアス言語の構造にしても、実際の効果という観点では同じですが、ソースコードの処理方法が決定的に異なります。

まず、このエイリアス言語構造がどのように処理されるかを見てから、後でエイリアス関数を見てみましょう。

zend_ language_parser.c はマクロ

#define T_EXIT 300

を定義し、また

enum yytokentype {
…
T_EXIT = 300,
….
}

を含む enum も定義します。ここでは、T_EXIT トークンのコードが 300 であることがわかります。

これらのコード行が含まれている zend_ language_scanner.l を見てください。

<ST_IN_SCRIPTING>”exit” {
return T_EXIT;
}
<ST_IN_SCRIPTING>”die” {
return T_EXIT;
}

明らかに、php が字句解析を行うとき、exit に遭遇したか、または die に遭遇したかに関係なく、T_EXIT トークンを返します。ここから、die と exit と PHP の内部処理がまったく同じであることが証明できます。

次の PHP コードを使用して判断することもできます:

<?php
var_dump(token_get_all(“<?php die;exit;?>”));

返された結果の die と exit に対応するトークン コードは両方とも 300 です。

さて、dieとexitの問題ですが、名前が違うだけで効果は同じであることが皆さんも確認できると思いますが、いわゆるメモリをアンインストールするかアンインストールしないかという問題はありません。

PHP マニュアル: die() exit() と同等。

説明: die() と exit() はどちらもスクリプトの実行を終了する関数です。実際、exit と die の 2 つの名前は同じ関数を指し、die() は exit() 関数の別名です。この関数は、プログラムまたは文字列によって返される値であるパラメータを 1 つだけ受け入れます。あるいはパラメータを入力できず、結果は戻り値になりません。

参考: この 2 つは同じですが、通常の使用には微妙な選択性があります。例:
exit 関数と die 関数に渡される値が 0 の場合、通常は exit() という名前を使用して、スクリプトの実行を早期に終了することを意味します。

echo "1111";
exit(0);
echo "2222";
//22222不会被输出,因为程序运行到exit(0)时,脚本已经被提前终止,“马上断气”。

プログラムにエラーが発生した場合、通常は die() という名前を使用してシステム端末にそのまま出力される文字列を渡すことができます。

$fp=fopen("./readme.txt","r") or die("不能打开该文件");

この場合、fopen 関数が呼び出され、ブール値 false が返された場合、die() はすぐにスクリプトを終了し、渡された文字列をすぐに出力します。死ぬよ。」

以上がこの記事の全内容です、皆様の学習のお役に立てれば幸いです。 H 関連する推奨事項:

Php 推荐+MySQL 実装 メッセージキューメソッド分析


Php 変数フロントデスク HTML の TEXTAREA の行を変更する方法と行を変更する方法

Php のバックグラウンドで取得する方法



🎜mysqlストアドプロシージャと🎜PHP🎜MYSQLストアドプロシージャインスタンスの呼び出し🎜🎜🎜🎜🎜の詳細説明🎜🎜🎜🎜

以上がphp die() と exit() の違いの詳細な例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
どのデータをPHPセッションに保存できますか?どのデータをPHPセッションに保存できますか?May 02, 2025 am 12:17 AM

phpssionscanStorestrings、numbers、arrays、andobjects.1.strings:textdatalikeusernames.2.numbers:integersorfloatsforcounters.3.arrays:listslikeshoppingcarts.4.objects:complextructuresthataresialized。

どのようにPHPセッションを開始しますか?どのようにPHPセッションを開始しますか?May 02, 2025 am 12:16 AM

tostartaphpsession、outsession_start()atthescript'sbeginning.1)placeitbe foreanyouttosetthesscookie.2)usesionsionsionsionserdatalikelogintatussorshoppingcarts.3)再生セッションインドストップレベントフィックスアタック

セッションの再生とは何ですか?また、セキュリティをどのように改善しますか?セッションの再生とは何ですか?また、セキュリティをどのように改善しますか?May 02, 2025 am 12:15 AM

セッション再生とは、新しいセッションIDを生成し、セッション固定攻撃の場合にユーザーが機密操作を実行するときに古いIDを無効にすることを指します。実装の手順には次のものが含まれます。1。感度操作を検出、2。新しいセッションIDを生成する、3。古いセッションIDを破壊し、4。ユーザー側のセッション情報を更新します。

PHPセッションを使用する際のパフォーマンスの考慮事項は何ですか?PHPセッションを使用する際のパフォーマンスの考慮事項は何ですか?May 02, 2025 am 12:11 AM

PHPセッションは、アプリケーションのパフォーマンスに大きな影響を与えます。最適化方法には以下が含まれます。1。データベースを使用してセッションデータを保存して応答速度を向上させます。 2。セッションデータの使用を削減し、必要な情報のみを保存します。 3.非ブロッキングセッションプロセッサを使用して、同時実行機能を改善します。 4.セッションの有効期限を調整して、ユーザーエクスペリエンスとサーバーの負担のバランスを取ります。 5.永続的なセッションを使用して、データの読み取り時間と書き込み時間を減らします。

PHPセッションはCookieとどのように異なりますか?PHPセッションはCookieとどのように異なりますか?May 02, 2025 am 12:03 AM

phpsesionsareserver-side、whilecookiesareclient-side.1)Sessionsionsionsoredataontheserver、aremoresecure.2)cookiesstoredataontheclient、cookiestoresecure、andlimitedinsizeisize.sesionsionsionivationivationivationivationivationivationivationivate

PHPはユーザーのセッションをどのように識別しますか?PHPはユーザーのセッションをどのように識別しますか?May 01, 2025 am 12:23 AM

phpidentifiesauser'ssessionsingsinssessionCookiesIds.1)whensession_start()iscalled、phpgeneratesauniquesidstoredsored incoookienadphpsessidontheuser'sbrowser.2)thisidallowsphptortorieSessiondatadata fromthata

PHPセッションを保護するためのベストプラクティスは何ですか?PHPセッションを保護するためのベストプラクティスは何ですか?May 01, 2025 am 12:22 AM

PHPセッションのセキュリティは、次の測定を通じて達成できます。1。session_regenerate_id()を使用して、ユーザーがログインまたは重要な操作である場合にセッションIDを再生します。 2. HTTPSプロトコルを介して送信セッションIDを暗号化します。 3。Session_Save_Path()を使用して、セッションデータを保存し、権限を正しく設定するためのSecure Directoryを指定します。

PHPセッションファイルはデフォルトで保存されていますか?PHPセッションファイルはデフォルトで保存されていますか?May 01, 2025 am 12:15 AM

phpsessionFilesToredInthededirectoryspecifiedBysession.save_path、通常/tmponunix-likesystemsorc:\ windows \ temponwindows.tocustomizethis:1)uesession_save_path()tosetaCustomdirectory、ensuringit'swritadistradistradistradistradistra

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衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

SublimeText3 Mac版

SublimeText3 Mac版

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