所有
如果我有这样的课程:
class MyClass {
var $height;
var $width;
function setDimensions($height,$width) {
$this->height = $height;
$this->width = $width;
}
}
另一个类似的......
class AnotherClass extends MyClass {
var $color;
var $speed;
function setFeatures($color,$speed) {
$this->color = $color;
$this->speed = $speed;
}
function showAll() {
echo "Color: ".$this->color."<br />";
echo "Speed: ".$this->speed."<br />";
echo "Height: ".$this->height."<br />";
echo "Width: ".$this->width."<br />";
// echo "Height: ".parent::height."<br />";
}
}
然后我这样做:
$firstClass = new MyClass();
$firstClass->setDimensions('200cm', '120cm');
$secondClass = new AnotherClass();
$secondClass->setFeatures('red','100mph');
$secondClass->showAll();
它不会打印$ firstClass中定义的属性。这是可以理解的,因为它们是两个独立的实例/对象。如何将属性从一个对象传递到另一个对象?我需要做$secondClass = new AnotherClass($firstClass)
这样的事情并以这种方式传递吗?
提前感谢您,任何帮助表示赞赏。
答案 0 :(得分:2)
因为它们是不同的实例。
在这个例子中,有一个实例同时是AnotherClass和MyClass
$firstClass = new AnotherClass();
$firstClass->setDimensions('200cm', '120cm');
$firstClass->setFeatures('red','100mph');
$firstClass->showAll();
这些类都不是抽象的。
在您的示例中,以下陈述为真:
另外,请不要使用var
来定义类属性。
使用private
,public
或protected
:
class MyClass {
public $height;
public $width;