2009-08-12 7 views
2

私がしようとしているのは、Webサイトの設定を含む別のPHPファイルを用意し、このファイルを他のページに含めて設定に応じてコードを実行させることです。しかし、クラス内でこれらの変数を参照するためにglobalを使用する場合は、変数は空です。たとえば、次のようにバリアブルが含まれていると、クラス内でグローバルが空になるのはなぜですか?

のsettings.php:

<?php 
$setting1 = 'on'; 
$setting2 = 'off'; 
?> 

Class.phpと:

<?php 
require_once('./settings.php'); 

class myclass { 
    public function __construct { 
    global $setting1; 
    echo $setting1; 
    } 
} 

$object = new myclass; 
?> 

これは何も出力しません。しかし、クラスの外で "echo $ setting1"を実行すると、 'on'が出力されます。 myclassの新しいオブジェクトを作成したときに、それをインクルードするのではなく、ファイルの中に変数を設定しようとしました。クラスのグローバルスコープで使用可能な変数を使用できるようにするために何か特別なことはありますか?

+0

あなたはの理由のために代わりにグローバルVARSの静的クラスを作成することを検討することをお勧めします名前空間の安全性。あなたの質問に直接答えるために、他の人が言及した括弧のようなものです。 – krdluzni

+0

どのバージョンのPHPですか? –

答えて

8

コンストラクタの名前の後に角括弧が必要です(例:

public function __construct() { 

} 

私はこれがあなたに致命的なエラーを与えているし、それが原因であなたのdisplay_errors/error_reporting設定で示されていないと思われます。

+0

+1 - 井戸が見つかった。 – karim79

+0

ニース、非常に速い! :) –

+0

ありがとう。私はこれを追加しましたが、私はまだ同じ問題に直面しています。インクルードされた変数は、クラスのグローバルスコープでは使用できません。 –

1

あなたが欠落していた括弧:

public function __construct { 

があるべき

public function __construct() { 

結果:

$ php -v 
PHP 5.2.5 (cli) (built: Nov 29 2007 09:31:38) 
2007-Macbook:Desktop mark$ php class.php 
on 
関連する問題