Есть 2 способа сделать это: агрегация и состав
агрегация, когда вы передаете ссылку на объект. Если уничтожен контейнер, объект не указан
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
Состав, когда объект принадлежит другому объекту. Поэтому, если владелец уничтожен, оба они уничтожены.
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
Почему вы вызываете другой метод в классе? –
в реальном сценарии, что у меня есть класс testA, фактически является классом db, который включает в себя методы, которые требуют db и т. Д. второй класс - это класс корзины покупок и в классе корзины покупок я хотел сделать запрос, называя его первым классом, например $ db-> query ("...") – michael