2017-10-18 8 views
0

親クラス内の変数に正しくアクセスする方法が混乱しています。これは子クラス内で設定されています。phpのクラスと拡張、可変スコープの混乱

は、我々は($ユーザとして)親クラスを持っていると言う:

class user 
{ 
    public $details = []; 
} 

($のログインなど)子クラス:

class login extends user 
{ 
    function do_login() 
    { 
     // something before here to grab their details from the DB 
     $this->details = $grabbed_user_details; 
    } 
} 

その後、私はやって期待していたすべてのものを呼び出すスクリプトに

$user = new user(); 
$login = new login(); 
$login->do_login(); 
$user->details['username']; 

ただし、「詳細」は空であるようです。私はこれについて完全に間違った方法を行っていますか?私はまだ範囲を理解しているとは思わない。

+0

あなたは、$ user' 'ではなく' $のlogin'には何も保存されていません。 '$ login-> details ['username']' – LKKP4ThX

+0

を試してみてください。私は混乱しています。ユーザークラスを拡張するのでログインクラスで設定すると思っていました。 – NaughtySquid

+0

いいえ、ログインはログインクラスに加えたユーザーに加えて拡張です。 – LKKP4ThX

答えて

1
$user = new user(); 

これは、detailsプロパティが空の配列である新しいオブジェクトを作成します。

$login = new login(); 

これは、空の配列であることdetails財産を所有だと2番目の新しいオブジェクトを作成します。

$login->do_login(); 

これは$loginオブジェクトのdetails配列を移入します。 $userオブジェクトのdetailsは空のままです。人口だ配列を取得する

$login->details['username']; 
関連する問題