include_once (require_once) はできるだけ使用しないことをお勧めします
この記事は、(include/require)_onceを使用すべきではない理由を詳細に分析して紹介したものです。必要な友達は、includeと
include_onceのどちらを使用するかについてを参照してください(以下、すべてinclude) require_once)、この議論は非常に長く、結論は常に、つまり include_once の代わりに include を使用してみてください、というものでした。これまでの最も一般的な理由は、include_once がロードされたファイル リストを確認するためにクエリする必要があるということでした。
これは本当で、この理由は正しいですが、今日話したいのは別の理由です
ファイルがロードされているかどうかを判断するには、PHP が次のことを行う必要があることがわかっています。ファイルの open_path を取得するには、たとえば次のことを意味します:
コードをコピー コードは次のとおりです:
<?php set_include_path ("/tmp/:/tmp2/"); include_once("2.php"); ?>
PHP が include_once "2.php" を認識した場合、実際のパスが何かはわかりません。このファイルはあり、ロードされたファイルのリストから移動することはできません。ロードされているかどうかを判断するため、include_once の実装では、最初にファイルの実際のパスを解析しようとします (通常のファイルの場合、この解析はチェックと同じです) getcwd とファイル パス。相対パスの場合、通常は成功しません)。解析が成功した場合は、EG (include_files) を検索します。存在する場合は、それが含まれていることを意味し、そうでない場合は返します。ファイルを開いてファイルのopened_pathを取得します。たとえば、上記の例では、このファイルは「/tmp2/2.php」に存在します
その後、open_pathを取得した後、PHPはロードされたファイルのリストに移動して検索します。含まれていない場合は、ファイルを開く必要はありません。
1. 正常に解析できた場合は、ファイル パスの絶対値を解析してみます。 EG (include_files) を確認し、存在する場合は戻り、存在しない場合は続行します
2. ファイルを開き、ファイルのオープンパス (opened path) を取得します
3. オープンされたパスを取得し、EG (include_files) を検索します。 、存在するかどうか、存在する場合は戻り、存在しない場合は続行します
4. ファイルをコンパイルする (compile_file)
ほとんどの場合、これは問題ありませんが、問題は APC を使用する場合にあります...
ときAPC を使用すると、APC はコンパイル済みファイルへのcompile_file ポインターをハイジャックし、それによってコンパイル結果をキャッシュから直接取得し、実際のファイルを開いたり、オープンするためのシステムコールを回避したりできます。
ただし、コード内で include_once を使用する場合は、compile_file の前に、 , PHP はすでにファイルを開こうとしていますが、APC によってハイジャックされたコンパイル ファイルを入力すると、この問題を解決するために、APC は include_once_override を導入し、PHP の ZEND_INCLUDE_OR_EVAL をハイジャックします。 opcodeハンドラーを呼び出し、statを通じてファイルの絶対パスを決定します。その後、それがロードされていないことが判明した場合は、opcodeを書き換えてインクルードし、トリッキーな解決策を作成します。
しかし、それは残念です。 APC の include_once_override が適切に実装されておらず、次のような未定義の問題が発生する可能性があると言われています。
コードをコピーします コードは次のとおりです:
<?php set_include_path("/tmp"); function a($arg = array()) { include_once("b.php"); } a(); a(); ?>
そして、私たちの b.php は " に配置されます。 /tmp/ b.php"、内容は次のとおりです:
コードは次のとおりです:
<?php class B {} ?>
次に、apc.include_once_override がオンになっている場合、継続的にアクセスすると次のエラーが発生します:
致命的なエラー - include () : クラス b を再宣言できません
これらの技術的要因を除けば、私は常に include_once の代わりに include を使用すべきであると信じてきました。なぜなら、自分で完全に計画でき、ファイルは 1 回だけロードされるからです。 自動ロードも使用できます。 これを行うには
include_once を使用する場合、それはコードに自信がないことを証明するだけです。
したがって、もう include_once を使用しないことをお勧めします。
以上がinclude_once (require_once) はできるだけ使用しないことをお勧めしますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

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

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

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

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

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

ホットトピック











マグネット リンクは、リソースをダウンロードするためのリンク方法であり、従来のダウンロード方法よりも便利で効率的です。マグネット リンクを使用すると、中間サーバーに依存せずに、ピアツーピア方式でリソースをダウンロードできます。この記事ではマグネットリンクの使い方と注意点を紹介します。 1. マグネット リンクとは? マグネット リンクは、P2P (Peer-to-Peer) プロトコルに基づくダウンロード方式です。ユーザーはマグネット リンクを通じてリソースの発行者に直接接続し、リソースの共有とダウンロードを完了できます。従来のダウンロード方法と比較して、磁気

mdf ファイルと mds ファイルの使用方法 コンピューター技術の継続的な進歩により、さまざまな方法でデータを保存および共有できるようになりました。デジタル メディアの分野では、特殊なファイル形式に遭遇することがよくあります。この記事では、一般的なファイル形式である mdf および mds ファイルについて説明し、その使用方法を紹介します。まず、mdf ファイルと mds ファイルの意味を理解する必要があります。 mdf は CD/DVD イメージ ファイルの拡張子で、mds ファイルは mdf ファイルのメタデータ ファイルです。

CrystalDiskMark は、シーケンシャルおよびランダムの読み取り/書き込み速度を迅速に測定する、ハード ドライブ用の小型 HDD ベンチマーク ツールです。次に、編集者が CrystalDiskMark と Crystaldiskmark の使用方法を紹介します。 1. CrystalDiskMark の概要 CrystalDiskMark は、機械式ハード ドライブとソリッド ステート ドライブ (SSD) の読み取りおよび書き込み速度とパフォーマンスを評価するために広く使用されているディスク パフォーマンス テスト ツールです。 ). ランダム I/O パフォーマンス。これは無料の Windows アプリケーションで、使いやすいインターフェイスとハード ドライブのパフォーマンスのさまざまな側面を評価するためのさまざまなテスト モードを提供し、ハードウェアのレビューで広く使用されています。

foobar2000 は、音楽リソースをいつでも聴くことができるソフトウェアです。あらゆる種類の音楽をロスレス音質で提供します。音楽プレーヤーの強化版により、より包括的で快適な音楽体験を得ることができます。その設計コンセプトは、高度なオーディオをコンピュータ上で再生可能 デバイスを携帯電話に移植し、より便利で効率的な音楽再生体験を提供 シンプルでわかりやすく、使いやすいインターフェースデザイン 過度な装飾や煩雑な操作を排除したミニマルなデザインスタイルを採用また、さまざまなスキンとテーマをサポートし、自分の好みに合わせて設定をカスタマイズし、複数のオーディオ形式の再生をサポートする専用の音楽プレーヤーを作成します。過度の音量による聴覚障害を避けるために、自分の聴覚の状態に合わせて調整してください。次は私がお手伝いさせてください

簡単に始めましょう: pip ミラー ソースの使用方法 世界中での Python の人気により、pip は Python パッケージ管理の標準ツールになりました。ただし、pip を使用してパッケージをインストールするときに多くの開発者が直面する一般的な問題は速度の遅さです。これは、デフォルトでは、pip は Python 公式ソースまたはその他の外部ソースからパッケージをダウンロードしますが、これらのソースが海外のサーバーに配置されている可能性があるため、ダウンロード速度が遅くなることがあります。ダウンロード速度を向上させるために、pip ミラー ソースを使用できます。ピップミラーソースとは何ですか?簡単に言えば、ただ、

MetaMask (中国語ではリトル フォックス ウォレットとも呼ばれます) は、無料で評判の高い暗号化ウォレット ソフトウェアです。現在、BTCC は MetaMask ウォレットへのバインドをサポートしており、バインド後は MetaMask ウォレットを使用してすぐにログイン、値の保存、コインの購入などが可能になり、初回バインドで 20 USDT のトライアル ボーナスも獲得できます。 BTCCMetaMask ウォレットのチュートリアルでは、MetaMask の登録方法と使用方法、および BTCC で Little Fox ウォレットをバインドして使用する方法を詳しく紹介します。メタマスクウォレットとは何ですか? 3,000 万人を超えるユーザーを抱える MetaMask Little Fox ウォレットは、現在最も人気のある暗号通貨ウォレットの 1 つです。無料で使用でき、拡張機能としてネットワーク上にインストールできます。

クラウド ストレージは今日、私たちの日常生活や仕事に欠かせない部分になっています。中国有数のクラウド ストレージ サービスの 1 つである Baidu Netdisk は、強力なストレージ機能、効率的な伝送速度、便利な操作体験により多くのユーザーの支持を得ています。また、重要なファイルのバックアップ、情報の共有、オンラインでのビデオの視聴、または音楽の聴きたい場合でも、Baidu Cloud Disk はニーズを満たすことができます。しかし、Baidu Netdisk アプリの具体的な使用方法を理解していないユーザーも多いため、このチュートリアルでは Baidu Netdisk アプリの使用方法を詳しく紹介します。まだ混乱しているユーザーは、この記事に従って詳細を学ぶことができます。 Baidu Cloud Network Disk の使用方法: 1. インストール まず、Baidu Cloud ソフトウェアをダウンロードしてインストールするときに、カスタム インストール オプションを選択してください。

NetEase Mailbox は、中国のネットユーザーに広く使用されている電子メール アドレスとして、その安定した効率的なサービスで常にユーザーの信頼を獲得してきました。 NetEase Mailbox Master は、携帯電話ユーザー向けに特別に作成された電子メール ソフトウェアで、電子メールの送受信プロセスが大幅に簡素化され、電子メールの処理がより便利になります。 NetEase Mailbox Master の使い方と具体的な機能について、以下ではこのサイトの編集者が詳しく紹介しますので、お役に立てれば幸いです。まず、モバイル アプリ ストアで NetEase Mailbox Master アプリを検索してダウンロードします。 App Store または Baidu Mobile Assistant で「NetEase Mailbox Master」を検索し、画面の指示に従ってインストールします。ダウンロードとインストールが完了したら、NetEase の電子メール アカウントを開いてログインします。ログイン インターフェイスは次のとおりです。
