ホームページ バックエンド開発 PHPチュートリアル include_once および require_once_PHP チュートリアルは終了してください。

include_once および require_once_PHP チュートリアルは終了してください。

Jul 21, 2016 pm 03:00 PM
include once require そして はい 欲しい これ

この理由は確かに正しいですが、今日話したいのは別の理由です
ファイルがロードされているかどうかを判断するには、PHP がファイルの open_path を取得する必要があることがわかっています。これは、たとえば次のことを意味します。

次のようなコードをコピーします:
& lt ;? php
set_include_path ("/tmp/:/tmp2/"); PHP は include_once "2.php" を認識します。このファイルのパスは であり、ロードされたファイルのリストからはロードされたかどうかを判断できないため、include_once の実装では、まずこのファイルの実際のパスを解析します (通常のファイルの場合、この解析はチェックするのと同じです) getcwd とファイル パスを指定するため、相対パスの場合は通常は成功しません)。解析が成功した場合は、EG (include_files) を検索します。存在する場合は、それが含まれていることを意味します。そうでない場合は、戻ります。ファイルを開いて、このファイルのopened_pa​​thを取得します。たとえば、上記の例では、このファイルは「/tmp2/2.php」に存在します。

次に、opened_pa​​thを取得した後、PHPはロードされたファイルのリストを確認します。含まれているかどうかを確認します。含まれていない場合は、直接コンパイルしてファイルを開く必要はありません。

1. ファイルの絶対パスを解析してみます。解析が成功した場合は、EG (include_files) を確認し、存在する場合は戻り、存在しない場合は続行します。
2. 3. 開いているパスを取得し、存在するかどうかを確認します。存在しない場合は、ファイルをコンパイルします (compile_file)。
ほとんどの場合、これは問題ではありませんが、問題は APC を使用する場合にあります...

APC を使用する場合、APC はコンパイル済みファイルのcompile_file ポインターをハイジャックし、それによってコンパイル結果をキャッシュから直接取得し、代わりにコンパイル結果を回避します。実際のファイルを開く際に、open へのシステムコールが回避されます。
ただし、コード内で include_once を使用すると、compile_file の前に、PHP は既にファイルを開こうとしており、この中に APC によってハイジャックされたコンパイル ファイルが入力されます。この問題を解決するために、APC は include_once_override を導入します。 include_once_override がオンになっている場合、APC は PHP の ZEND_INCLUDE_OR_EVAL オペコード ハンドラーをハイジャックし、ファイル サイズが見つかった場合には stat を使用します。ロードされていない場合は、オペコードを書き換えてインクルードし、トリッキーな解決策を講じます


しかし、残念ながら、前述したように、APC の include_once_override は適切に実装されておらず、いくつかの未定義の問題が発生します。 例:

コードをコピーします

コードは次のとおりです:


set_include_path("/tmp");
function a($arg = array()) {

include_once("b.php" ); } a(); a();
?>



次に、b.php は「/tmp/b.php」に配置され、内容は次のとおりです:



コードをコピーします

コードは次のとおりです:

class B {}
?>
次に、apc.include_once_override がオンになっている場合、継続的にアクセスすると次のエラーが発生します: 致命的なエラー - include (): クラスを再宣言できません

これらの技術的要因を除けば、私は include_once の代わりに include を使用すべきだと常に信じてきました。なぜなら、完全に自分自身で計画でき、ファイルは 1 回だけロードされるからです。これを行うために自動ロードを使用することもできます。

include_once を使用する場合、それは自分のコードに自信がないことを証明するだけです
したがって、皆さんにはもう include_once を使用しないことをお勧めします


http://www.bkjia.com/PHPjc/328035.html

www.bkjia.com


tru​​e

http://www.bkjia.com/PHPjc/328035.html

技術記事

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

ホット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ヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

vue3+vite: src に画像を動的にインポートするために require を使用するときのエラーを解決する方法 vue3+vite: src に画像を動的にインポートするために require を使用するときのエラーを解決する方法 May 21, 2023 pm 03:16 PM

vue3+vite:src は、イメージとエラー レポートと解決策を動的にインポートするために require を使用します。vue3+vite は複数のイメージを動的にインポートします。vue3。TypeScript 開発を使用している場合、イメージを導入するために require のエラー メッセージが表示されます。requireisnotdefined は使用できません。 vue2 のような imgUrl:require(' .../assets/test.png') は、typescript が require をサポートしていないため、インポートされます。そのため、import が使用されます。解決方法は次のとおりです: awaitimport を使用します

R55600 と互換性のある ASUS マザーボード オプション (R55600u および 5600h を含む) R55600 と互換性のある ASUS マザーボード オプション (R55600u および 5600h を含む) Jan 02, 2024 pm 05:32 PM

R55600 と組み合わせる ASUS マザーボードはどれですか? ASUS ROGStrixB550-FGaming マザーボードは優れた選択肢です。 Ryzen55600Xプロセッサーと完全な互換性があり、優れたパフォーマンスと機能を提供します。このマザーボードは信頼性の高い電源システムを備え、オーバークロックをサポートし、日常の使用やゲームのニーズを満たす豊富な拡張スロットとポートを提供します。 ROGStrixB550-FGaming には、高品質のオーディオ ソリューション、高速ネットワーク接続、信頼性の高い放熱設計も装備されており、システムの効率性と安定性を確保します。さらに、このマザーボードはゴージャスな ROG スタイルを採用し、ゴージャスな RGB ライティング効果を備えており、コンピューターに視覚的な楽しさを加えます。全体として、ASUS ROGStri

Celeron g4900とi36100はどちらが優れていますか? (Celeron g4900 と i34170 ではどちらが優れていますか?) Celeron g4900とi36100はどちらが優れていますか? (Celeron g4900 と i34170 ではどちらが優れていますか?) Jan 01, 2024 pm 06:01 PM

Celeron g4900 と i36100 はどちらが優れていますか? Celeron G4900 と I36100 の 2 つのプロセッサに関して言えば、I36100 のパフォーマンスが優れていることは疑いの余地がありません。 Celeron プロセッサは一般にローエンド プロセッサとみなされ、主に低価格のラップトップで使用されます。 I3 プロセッサは主にハイエンド プロセッサに使用されており、そのパフォーマンスは非常に優れています。 I3 プロセッサーを使用すると、ゲームをプレイするときもビデオを視聴するときも遅延を感じることはありません。したがって、可能であれば、オンラインの世界を楽しむために、特にデスクトップ コンピューターにはインテル I シリーズ プロセッサーを購入するようにしてください。 Celeron G4900T のパフォーマンスはどうですか? パフォーマンスの観点から見ると、Pentium G4900T は周波数の点で優れたパフォーマンスを示しています。以前のバージョンと比較すると、CPU のパフォーマンスは向上しています。

php include と include_once の違いは何ですか php include と include_once の違いは何ですか Mar 22, 2023 am 10:38 AM

PHP を使用して Web ページを作成する場合、他の PHP ファイルのコードを現在の PHP ファイルに含める必要がある場合があります。現時点では、include 関数または include_once 関数を使用してファイルのインクルードを実装できます。では、include と include_once の違いは何でしょうか?

require の用途は何ですか? require の用途は何ですか? Nov 27, 2023 am 10:03 AM

require の使用法: 1. モジュールの導入: 多くのプログラミング言語では、require は外部モジュールまたはライブラリを導入し、それらが提供する関数をプログラム内で使用できるようにするために使用されます。たとえば、Ruby では、require を使用してサードパーティのライブラリまたはモジュールをロードできます。 2. クラスまたはメソッドのインポート: 一部のプログラミング言語では、require を使用して特定のクラスまたはメソッドをインポートし、現在のファイルで使用できるようにします。 ; 3. 特定のタスクを実行する: 一部のプログラミング言語またはフレームワークでは、特定のタスクまたは関数を実行するために require が使用されます。

バックパックを背負ってチベットに旅行に行くのですが、 ①バッグの容量は何リットルくらいが適していますか?どのような構成がベストだと思いますか教えてください。 私は170歳で、初めての体力があります。 バックパックを背負ってチベットに旅行に行くのですが、 ①バッグの容量は何リットルくらいが適していますか?どのような構成がベストだと思いますか教えてください。 私は170歳で、初めての体力があります。 Jan 07, 2024 am 10:06 AM

チベットにバックパッキングに行く予定です ①バッグは何リットルくらい持っていきますか?ベストな構成を教えてください 私は170歳で体力はありますが、初めてハイキングに行ったときは60リットルでしたリットル以上 ハイキングの量は60リットル未満 移動はすべて車でした リュックサックは必要ありません、スーツケースが便利です どうしても何かを持ち歩きたい場合は25〜40リットルチベット旅行の必需品:サングラス、日よけ帽子、日焼け止め、スキンクリーム、リップクリーム、長袖上着、セーター;特別な旅行やアリ、北チベット、四川チベット線への旅行の場合は、これが必要です。持参推奨品:寝袋(防寒)、シーツ(汚れ防止)、ダウンジャケット、旅行靴または登山靴、スリッパ、歯ブラシ、歯磨き粉、タオル、巻き紙、紙パンツ、消毒用ワイプ、懐中電灯、防水マッチ、ナイフ、ロープ。フロント バッグにコンピューターを入れて持ち運べますか? フロント バッグにコンピューターを入れて持ち運べますか? バックパックによっては、フロント バッグに入れて持ち運べますか?

ミッドジャーニーを倒すために魔法で改造された「黒神話悟空」 このAI描画ツールは素晴らしいです。 ミッドジャーニーを倒すために魔法で改造された「黒神話悟空」 このAI描画ツールは素晴らしいです。 Aug 23, 2024 pm 09:42 PM

AI Ideogram がリアリズムと芸術的センスを競うとき、Ideogram は難しい道を切り開きました。画像上にテキストを正確に生成でき、フォントとレイアウトが美しいのです。この需要はニッチなものではありません。P ピクチャを使用せずにワンクリックでポスターやイラストを生成できるので、デザインについて何も知らない一般の人にとっても非常に適しています。以前、Ideogram のバージョン 1.0 について書きました。 8月21日にはバージョン2.0が登場し、よりリアルになり、ポスターのデザインもより強化され、テキストの特殊性も強化されました。聞いたことがないかもしれませんが、これは元 Google 従業員によって開発された AI 製品です。多くの欠点がありますが、ロングボードはコーナーでミッドジャーニーを「追い抜く」ことができます。行き方 https://ideogram.ai/A

Huntkey s980 と Bauhaus (Huntkey Apollo または Lianli Bauhaus o11) はどちらが優れていますか Huntkey s980 と Bauhaus (Huntkey Apollo または Lianli Bauhaus o11) はどちらが優れていますか Jan 12, 2024 am 11:06 AM

Huntkey s980 と Bauhaus はどちらが優れていますか? Huntkey S980 と Bauhaus (BeQuiet) は、コンピューター電源 (PSU) メーカーの 2 つの異なるブランドです。どちらを選択するのが良いかは、ニーズや個人の好みによって異なりますが、消費者から認められ、賞賛されています。同社の製品はパソコン、サーバー、産業機器などの分野で幅広く使用されています。 Huntkey は、高品質のパワー製品を提供し、常に新しい技術と革新的な設計を導入することに取り組んでいます。同社の製品は、デバイスに安定かつ効率的に電力を供給できることを保証するために、厳格な品質管理とテストを受けています。ハントキーは環境保護や省エネにも気を配り、環境への影響を軽減するよう努めています。同社の電源は国際規格に準拠しており、複数の認証や賞を受賞しています。評判の良いブランドとして

See all articles