PHPのrequire_once()関数がうまく機能しない理由の話
前回の記事で PHPのdie()関数とsleep()関数の使い分けについて語る 前回は、die()関数とsleep()関数の使い方を簡単に紹介しましたので、興味のある方は、ぜひ勉強してみてください。
この記事では、PHPでrequire_once()がうまく機能しない理由をお伝えします!
しかし、うまくいかないと言う前に、require_once()関数の定義と使い方について見てみましょう。
require_once()
関数は PHP の組み込み関数で、PHP スクリプトの中で PHP ファイルを別のファイルに複数回導入したい場合などに非常に便利です。ファイルがすでにインクルードされている場合、スクリプトを実行する際に導入された内容をすべて無視するため、ファイルが複数回インクルードされているかどうかをチェックするために使用されます。
構文は " です。
require_once('filename and path');
"です。
require_once 関数は、パラメータ 'filename and path' をひとつだけ受け取ります。これは、PHP スクリプトに含めたいファイルを指定します。これは文字列型のパラメータです。
そして戻り値は、呼び出されたファイルが見つかり、そのファイルがすでにインクルードされていれば、関数はブール値のTrueを返し、そのファイルがインクルードされていなければ、関数はそのファイルをインクルードしてTrueを返します。しかし、呼び出されたファイルが見つからない場合は、致命的なエラーが発生し、何も出力されず、実行が停止し、ブール値Falseが返されます。
PHPのrequire_once()関数の使用例です。
ファイル名:test.php
コード
<?php
// file content
echo "Welcome to PHP Chinese! ";
? >
ファイル名:index.php
コード
<?php
// Include files
require_once('test.php');
require_once('test.php');
? >
出力します。
PHP.comへようこそ!
注意:require_once()関数は、最初のファイルが紹介された後の類似の紹介はすべて無視します。
では、なぜrequire_once()関数がうまく機能しないのかについて説明します。
2つあります。
1. require_once()関数は、すべてのファイルをインクルードする間、サーバーに多くの負荷をかけます。
2. require_once()関数は、変数を格納する際に重複して使用すると、正しく動作しません。
ファイル名:my_file.php
例
<?php
// file content
$var = 'PHP';
? >
ファイル名:check.php
<?php
function func() {
require_once('my_file.php');
return $var;
}
for($i = 1; $i <= 3; $i++) {
echo func() . "
";
}
? >
出力します。
PHP
上記の例で require_once() 関数を require() 関数に置き換えることで、すべての関数呼び出しで変数 $var が利用可能になることを保証することができます。
ファイル名:check2.php
<?php
function func() {
require('my_file.php');
return $var;
}
for($i = 1; $i <= 3; $i++) {
echo func() . "
";
}
? >
出力します。
php php php php
require_once() 関数は、スクリプトが関数を呼び出すたびにファイルがインクルードされているかどうかを確認するため、require() や include() 関数よりも処理速度が遅くなります。 そのため
PHPのrequire_once()関数が良くない理由についての記事はこちらです。PHPのrequire_once()についての詳しい情報は、過去の記事を検索するか、以下の記事を引き続き閲覧してください。
関連
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン