Все,
Если у меня есть такой класс:
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)
и передать это таким образом?
Заранее спасибо, любая помощь приветствуется.
Потому что это разные экземпляры.
В этом примере есть один экземпляр, который одновременно является 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;
Других решений пока нет …