次の簡単なコードがあります。
$a = 'hello';
function myfunc() {
echo 'in myfunc';
}
class myclass {
function __construct() {
myfunc();
echo $a;
}
}
$m1 = new myclass();
$a はグローバルスコープにあり、最初にグローバルとして宣言しないとクラス内からアクセスできないため、メソッド内の echo $a は予想どおりエラーを返します。これは PHP のマニュアルに記載されています。
myfunc() の呼び出しは機能しますが、その理由がわかりません。これはグローバル スコープでも宣言されていますが、メソッドは最初にグローバルとして宣言しなくてもアクセスできます。これが機能する理由を説明しているPHPマニュアルには何も見つからないようです。
たぶん、私は PHP をあまりにも長い間使ってきましたが、これはとても単純なことで、その仕組みを忘れてしまいました。クラスメソッド内からグローバル関数にアクセスできると書かれているPHPマニュアルの場所への洞察またはリンクをいただければ幸いです。
前もって感謝します。