ホームページ >バックエンド開発 >PHPチュートリアル >関数に include を入れると、include された変数を呼び出すことができなくなります。

関数に include を入れると、include された変数を呼び出すことができなくなります。

WBOY
WBOYオリジナル
2016-06-13 12:58:471148ブラウズ

関数に include を入れると、include した変数は呼び出せなくなるのでしょうか?
1.php

<br />
echo $a;<br />


2.php
<br />
$a = "aaaaaaaaaaaa";<br />
include("1.php");<br />



2.phpをこのように書いて実行すると正しく出力が得られますが、このようにはできません
2.php
<br />
function loadFile($filename){<br />
    include $filename;<br />
}<br />
$a = "aaaaaaaaaaaa";<br />
loadFile("1.php");<br />


これはなぜでしょうか?インクルードを関数に入れると、インクルードされたファイルはその変数を参照できません
-----解決策-------- -
<br />
function loadFile(){<br />
    echo $a;<br />
}<br />
$a = "aaaaaaaaaaaa";<br />
loadFile();<br />


試してみればわかります
-----解決策------------
変数スコープの問題 。

関数内に 1.php を含めた場合、関数の外で宣言された変数は関数に影響を与えません。関数内でグローバル化しない限り。または、1.php の $a の代わりに $GLOBALS['a'] を使用します。

さらに、私にはたくさんのファイルを書いて、それをどこにでも含めるのが好きな同僚がいます。
私は、グローバル変数の汚染を引き起こすこのアプローチには非常に抵抗があります。競合が発生するのを恐れて、変数がどこで宣言されているか、または変数を宣言するときに見つけるのに苦労することがよくあります。そしてコードが汚い。

したがって、このアプローチは使用しないことをお勧めします。変数をローカルで制御するようにしてください。これは、PHP のパフォーマンスに良いだけでなく、コードのロジックも明確になります。
------解決策------
まあ、これはスコープの問題です。

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