Dizilerle ilgili OO PHP soru

4 Cevap

Ben PHP Java öğrendim basit egzersizler bazı taşıma ile nesne yönelimli PHP öğrenmeye çalışıyorum. Bu 3 kişi toplam maaş hesaplamak için, bunlardan biridir.

Ben görünüşte aile sınıfında dizi ile bir sorun yaşıyorum - php ile ilgili bir hata veriyor "Tanımsız değişken: a_family" hat 32 üzerinde herkes doğru yönde bana gösterebilir misiniz.?

<?php
    class person {
    	private $name;
    	private $salary;

    	//constructor
    	function __construct($given_name, $given_salary) {
    		$this->name = $given_name;
    		$this->salary = $given_salary;
    	}

    	//getter for salary
    	function get_salary() {
    		return $this->salary;
    	}

    }

    class family {
    	private $a_family;

    	function __construct() {
    		$a_family = array();
    	}

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

    	function get_total_salary() {
    		$total_salary = 0;
    		foreach ($a_family as $member) {
    			$total_salary = $total_salary + $member->get_salary();
    		}

    		return $total_salary;
    	}
    }

    $mum = new person("Mummy", 500);
    $dad = new person("Daddy", 1500);
    $sis = new person("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();

?>

<!-- start HTML -->
<html>
    <head>

    </head>

    <body>
    	<p>My total family income is $<?php echo $family_income; ?>.</p>
    </body>

</html>

4 Cevap

Java aksine, PHP this anahtar kelime belirsizlik yoktur bile örnek değişkenleri başvuru için zorunludur. Eğer kişi sınıfında doğru yaptık. Siz de aile sınıfında this kullanmanız gerekir.

$this->a_family = array();

...

$this->a_family[] = $given_person;

...

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

...

İstediğiniz:

$this->a_family = array();

ve:

$this->a_family[] = $given_person;

Sadece birinci sınıf yaptık gibi.

Bu-> a_family yerine işlevleri içinde $ olarak a_family $ referans gerekir.

İhtiyacınız olanlar:

$this->a_family

çünkü bir set olsa bile $a_family için, sınıf kapsamında bir değişkene atıfta private.

$a_family, yalnızca geçerli yönteminde değişkeni ifade eder.