2011-01-30 6 views
0

ログイン/ユーザー情報を含む既存のオブジェクトInformationがあります。私は別のクラスからこれにアクセスしたいと思います。私はグーグルと年齢を検索しようとした...運がない。 Informationオブジェクトが範囲外になるのはなぜですか?PHP:クラス内の既存のオブジェクトへのアクセス

class foo() { 
function display() { 
    print_r($Information); 
} 
} 

答えて

1

$情報がさまざまな理由で範囲外になる可能性があります。

まず、多分$情報はグローバルで、あなただけのグローバルキーワードでPHPを伝える必要があります:

class foo() { 
function display() { 
    global $Information 
    print_r($Information); 
} 
} 

第二に、多分$情報がfooインスタンスの一部ですか?この場合、PHPでは "$ this"というキーワードが必要です。

class foo() { 
function display() {  
    print_r($this->Information); 
} 
} 

第3に多分$情報がディスプレイの呼び出し元で作成され、/ fooは単に何も知りません。

function bar() 
{ 
    $Information = new $information; 
    $a = new Foo(); 
    $a->display(); 
{ 

あなたが明示的に表示する$情報を渡すか、または各Fooのインスタンスのメンバ変数にする場合を除き

、表示がそれにアクセスすることはできません。表示は、(1)グローバル変数(2)インスタンス変数、(3)表示するパラメータ、(4)表示するローカル変数を見ることができます。 display()のスコープ内に他のものはありません。

あなたの質問に答えるための編集 はい、それは最初にグローバルとして定義されたことを意味します。ないのように特定の機能、すなわち内:

グローバルを避けるための理由がたくさんあります。トピックにはたくさんの文章が書かれています。ここにはstackoverflow questionがあります。

+0

ありがとうございます!私が解決した最初の方法は、情報のプロパティの1つをクラスの外に取得し、グローバル変数を使用してその変数にアクセスすることでした。あなたが気にしないなら、あなたが* $情報がグローバル*であると言うとき、それは何を意味するのですか?また、今後グローバルな使用を避けるべき主な理由はありますか? PS:グローバル*情報*をやりました。 – Mike

関連する問題