OOP: 'çocuk' nesne 'baba' öznitelikleri almak

1 Cevap php

Burada ben yine buradayım ;)

Benim sorunum atm iç içe php sınıfları ile, i var, örneğin, bu gibi bir sınıf:

class Father{
    public $father_id;
    public $name;
    public $job;
    public $sons;
    public function __construct($id, $name, $job){
        $this->father_id = $id;
        $this->name = $name;
        $this->job = $job;
        $this->sons = array();
    }

    public function AddSon($son_id, $son_name, $son_age){
        $sonHandler = new Son($son_id, $son_name, $son_age);
        $this->sons[] = $sonHandler;
        return $sonHandler;
    }

    public function ChangeJob($newJob){
        $this->job = $newJob;
    }
}

class Son{
    public $son_id;
    public $son_name;
    public $son_age;
    public function __construct($son_id, $son_name, $son_age){
        $this->son_id = $son_id;
        $this->son_name = $son_name;
        $this->son_age = $son_age;
    }
    public function GetFatherJob(){
        //how can i retrieve the $daddy->job value??
    }
}

that's it, a useless class to explain my problem. What im trying to do is:

$daddy = new Father('1', 'Foo', 'Bar');
//then, add as many sons as i need:
$first_son = $daddy->AddSon('2', 'John', '13');
$second_son = $daddy->AddSon('3', 'Rambo', '18');
//and i can get here with no trouble. but now, lets say i need
//to retrieve the daddy's job referencing any of his sons... how?
echo $first_son->GetFatherJob(); //?

Yani, her oğul birbirinden Indipendent ama babadan birinden özelliklerini ve değerlerini devralır gerekir ..

Ben miras ile uğraş ettik:

class Son extends Father{
[....]

Ama baba ben aksi babasının nitelikleri null olacak .. yeni bir oğlu eklemek her zaman niteliklerini bildirmek zorunda olacak

Herhangi bir yardım?

1 Cevap

Sen onların babası oğulları söyleyemem sürece. Bu oğlu bir setFather () yöntemi, ekleme ve baba addSon () yöntemi arayarak yapılabilir.

örn.

class Son {
    protected $_father;
    // ...
    public function setFather($father) {
        $this->_father = $father;
    }

    public function getFather() {
        return $this->_father;
    }
}

class Father {
    // ...
    public function AddSon($son_id, $son_name, $son_age){
        $sonHandler = new Son($son_id, $son_name, $son_age);
        $sonHandler->setFather($this);
        $this->sons[] = $sonHandler;
        return $sonHandler;
    }
}

Bir yan not olarak, ben AddSon yöntemi içinde oğlunu yaratmak olmaz, ben bu yöntem parametre olarak zaten yaratmıştır oğlunu almak olurdu.