1


0

私はJavaで学んだ簡単な演習のいくつかをPHPに移植することによって、オブジェクト指向PHPを学ぼうとしています。 これはそのうちの一つです、3人の合計給与を計算する。

私はファミリークラスの配列に問題があるようです - phpは32行目の "Undefined variable:a_family"についてエラーを出しています。 誰かが私を正しい方向に向けることができますか?

name = $ given_name; $ this-> salary = $ given_salary; }

//給与関数のgetter get_salary(){return $ this-> salary;} }

}

クラスfamily {private $ a_family;

関数__construct(){$ a_family = array(); }

function add_family_member($ given_person){$ a_family [] = $ given_person; }

関数get_total_salary(){$ total_salary = 0; foreach($ memberとしての$ a_family){$ total_salary = $ total_salary $ member-> get_salary(); }

$ total_salaryを返します。 }}

$ mum =新しい人( "ミイラ"、500); $ dad =新しい人( "Daddy"、1500)。 $ sis =新しい人( "Sister"、20);

$ my_family = new family();

$ my_family-> add_family_member($ mum); $ my_family-> add_family_member($ dad); $ my_family-> add_family_member($ sis);

$ family_income = $ my_family-> get_total_salary();

?




私の家族の総収入は$です。

4 Answer


2


あなたが欲しい:

$ this-> a_family = array();

そして:

$ this-> a_family [] = $ given_person;

あなたが最初のクラスでやったように。


1


関数の中ではなく、$ a_familyを$ this→ a_familyとして参照している必要があります。


1


あなたが必要です:

$this->a_family

なぜなら、あなたが $ a_family`を private`に設定したとしても、クラススコープ内の変数を参照しているからです。

`$ a_family`は現在のメソッド内の変数のみを参照します。


1


Javaとは異なり、PHPでは、あいまいさがない場合でもインスタンス変数を参照するために `this`キーワードが必須です。 あなたはあなたの個人クラスでそれを正しくしました。 あなたはあなたの家族クラスでも `this`を使う必要があります。

$this->a_family = array();

...

$this->a_family[] = $given_person;

...

foreach ($this->a_family as $member) {

...