一个类可以实例化另一个类吗? (PHP)
我尝试了这一点,当我尝试在类“second”中实例化类“first”时出现错误。
类“second”中的注释部分会导致错误。
class first {
public $a;
function __construct() {
$this->a = 'a';
}
}
class second {
//$fst = new first();
//public showfirst() {
//$firsta = $this->first->a;
// echo "Here is first $a: " . $firsta;
//}
}
编辑:
这会导致服务器错误,即使我在“second”类中的所有类都是“first”类的实例化。
class second {
$fst = new first();
//public showfirsta() {
// $firsta = $this->fst->a;
// echo "Here is first $a: " . $firsta;
//}
}
尝试这个:
class First {
public $a;
public function __construct() {
$this->a = 'a';
}
public function getA() {
return $this->a;
}
}
class Second {
protected $fst;
public function __construct() {
$this->fst = new First();
}
public function showfirst() {
$firsta = $this->fst->getA();
echo "Here is first {$firsta}";
}
}
$test = new Second();
$test->showfirst();
$fst = new first();
你不能声明一个在函数外实例化一个新类的变量。 默认值不可变。 它必须是一个字符串,一个数字或一个数组。 对象被禁止。
public showfirst() {
你忘了那里的单词function
。
$firsta = $this->first->a;
您没有$first
声明的类变量$first
。 您将其命名为$fst
,并将其引用为$this->fst
。
echo "Here is first $a: " . $firsta;
}
为了你的目的(无论那些可能):
class second {
public function showfirst() {
$fst = new first();
$firsta = $fst->a;
echo "Here is first $a: " . $firsta;
}
}
你可以在另一个实例化一个类。 就你的情况而言,在你的两个例子中,你总是指向错误的变量。 此外,您不能在属性声明中分配类:
class second {
public $fst;
public function showfirsta() {
$this->fst = new first();
$firsta = $this->fst->a;
echo "Here is first $a: " . $firsta;
}
}
链接地址: http://www.djcxy.com/p/59549.html