這是我的設置。如何從一個類中調用另一個類的方法?
class testA {
function doSomething() {
return something;
}
}
$classA = new testA();
class testB {
$classA->doSomething();
}
這不會在該類內部工作:$ classA-> doSomething(); 我該怎麼辦呢?
這是我的設置。如何從一個類中調用另一個類的方法?
class testA {
function doSomething() {
return something;
}
}
$classA = new testA();
class testB {
$classA->doSomething();
}
這不會在該類內部工作:$ classA-> doSomething(); 我該怎麼辦呢?
有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
爲什麼要在類範圍內調用其他方法? – 2010-05-07 07:00:29
在我有類testA的實際腳本中,實際上是包含具有db需要的方法的db類,等等。第二類是購物車類,並且在購物車類中,我想通過第一類來調用它,例如$ db-> query(「...」) – michael 2010-05-07 07:07:35