我如何在B类函数C中运行方法$ this-> ob-> getVar()?我没有。我必须将字符串传递给构造函数吗?
<?php
class A{
public $tabb = array('1'=>'one', '2'=>'two');
public $index;
public function setVar($v){
$this->index = $v;
}
public function getVar(){
return $this->index;
}
public function arr(){
return $this->tabb;
}
}
class B{
public $tab;
public function __construct($var){
$this->ob=new A;
$this->tab = $var;
}
public function C(){
return $this->D($this->tab, $this->ob->getVar());
}
public function D($l, $j){
if(is_array($l) && isset($j)){
print 'yes';
} else {
print 'no';
}
}
}
$obb = new A;
$obb->setVar('onetwo');
$k = $obb->arr();
$obbb = new B($k);
$obbb->C();
?>
答案 0 :(得分:1)
首先,为了约定,你的B类应该声明一个$ obj的私有变量,但这在PHP中是不必要的。
其次,你的B类只是在它的构造函数中创建一个新的A实例。所以你有两个不同的A类。一旦进入内部B,就不会填充其索引属性。
如果你想在B对象之外创建A对象,你必须像这样传递它:
$obbb = new B($k, $obb);
所以现在你的新B构造函数是这样的:
public function __construct($var, $someObject){
if (!empty($someObject)) {
$this->ob = $someObject;
}
else {
$this->ob=new A;
}
$this->tab = $var;
}