Bir sınıf içinde başka sınıfları yöntemi çağırmak nasıl?

2 Cevap php

burada benim kurulum.

class testA {

    function doSomething() {
    return something;
    }

}

$classA = new testA();

class testB {

 $classA->doSomething();


}

this wont work inside that class.: $classA->doSomething(); how else would i do it?

2 Cevap

Toplama ve kompozisyon: bunu yapmak için 2 yol vardır

Bir nesneye bir başvuru geçirdiğinizde toplanmasıdır. Itiraz konteyner yok ise içerdiği nesne değildir

class testB {

    private $classA;
    public function setClassA ( testA $classA ) {
        $this->classA = $classA;
    }
    public function doStuffWithA() {
        $this->classA->doSomething();
    }

}

$classA = new testA;
$classB = new testB;
// this is the aggregation
$classB->setClassA( $classA );
$classB->doStuffWithA();
unset($classB); // classA still exists

Bir nesneyi başka bir nesne tarafından sahip olunan zaman bileşimidir. Sahibi tahrip Yani, ikisi de yok edilir.

class testB {

    private $classA;
    public function __construct() {
        $this->classA = new testA;
    }
    public function doStuffWithA() {
        $this->classA->doSomething();
    }
}
$classB = new testB; // new testA object is created
$classB->doStuffWithA();
unset($classB);  // both are destroyed

Böyle sınıfları içinde ifadeler koyamazsınız. Ifadesi $classA->doSomething() de bir işlev içinde olmak zorundadır.