ここに私のシナリオです:ネストされた関数内でグローバル変数にアクセスする
$foo = bar;
one()
{
two()
{
three()
{
// need access to $foo here
}
}
}
私は私がダウンして3つの機能すべて$ FOOを渡すことができます知っているが、あなたがまたはそれを必要としない場合がありますので、それは、本当に理想的ではありません、他にも既に他のパラメータがあります。私がそれを防ぐことができれば、そのリストに追加したくありません。あなたがthree()
になるときだけ、$foo
が必要です。私はglobal $foo;
をthree()
に指定することもできると知っていますが、これは良い習慣ではないことを読んでいます。
$foo
はthree()
のいずれにも適用できません。
もう少し情報を提供するために、この場合の$ fooはデータベースへの接続方法に関する情報です。サーバー、ユーザー、パス、それは実際にはthree()
の情報が必要ですか?もちろん、ドキュメントが読み込まれるとデータベースに接続することもできますが、ドキュメントで必要としない場合は不要です。
アイデア?
UPDATE:私は申し訳ありませんが、各機能の冒頭に「機能」があることを意味しているわけではありません。
本当に実際にネストされた機能を使用していますか? – alexn
一般的な規則として、関数定義を入れ子にしないでください...コードとコーダーの両方の巧妙化の無意味な試練 –