1

プログラムの先頭に含まれているファイル「config.php」があります(以下を参照)。メインファイルは実行されます。require 'config.php';

config.php

<?
global $config;
$config['tblist'] = 'pending'; 
$config['tbdone'] = 'checked';
$config['checkfreq'] = 24;
?>

次に、新しいページオブジェクトを作成します

$page = new Page($name,$source);

そのページオブジェクトの関数の1つは、構成から何かを取得できるようにしたいのですが、$configを参照できないようです。グローバル$configを配置しましたか。正しい場所に?

4

5 に答える 5

3

関数でグローバル変数を参照する場合は、それらをグローバルとして宣言する必要があります。

global $config;

これも興味深い: http://me.veekun.com/blog/2012/04/09/php-a-fractal-of-bad-design/

変数を宣言する方法はありません。存在しない変数は、最初の使用時に null 値で作成されます。

グローバル変数は、使用する前にグローバル宣言が必要です。これは上記の当然の結果であり、明示的な宣言なしではグローバルを読み取ることさえできないことを除けば、完全に合理的です。代わりに、PHP は静かに同じ名前のローカルを作成します。同様のスコープの問題を持つ別の言語を知りません。

公平を期すために、それらを有効にしている場合は通知もスローします。

于 2013-01-25T02:50:43.913 に答える
1

変数global $configを使用する前に関数内に配置します。

例については、変数スコープに関する PHP マニュアルを参照してください。

于 2013-01-25T02:52:42.990 に答える
0

$config がグローバル変数であることを関数で宣言する必要があります

PHP変数のスコープが必要かもしれません

于 2013-01-25T02:51:38.923 に答える
0

$config を使用する必要がある関数で、最初に $config をグローバルとして宣言しましたか? 例えば:

function foo() {
    global $config;

    $a = $config['tblist'];
    ....
}

$config は、最初にそのように宣言されている場合にのみグローバル変数を参照し、そうでない場合はローカル スコープ内の変数を参照します。

グローバルの詳細については、 PHP グローバルを参照してください。

于 2013-01-25T02:54:57.283 に答える
0

Page オブジェクト内から $config を含めることができます。

class Page
{
    protected $config;
    public function __construct($configPath)
    {
        include $configPath;
        $this->config=$config;
    }
}
于 2013-01-25T02:55:17.050 に答える