Здесь
$product1 = new ShopProductWriter("My Antonia", "Willa", "Cather", 5.99);
вы воссоздали $product1
, который до этого был ShopProduct
. Исходя из этого, $product1
является ShopProductWriter
объектом. У него нет getProducer()
метода, у него есть только write()
метод. Это опечатка в вашем коде, я думаю, что вы переписывали свой код несколько раз, и осталось несколько старых инициализаций, которые вы должны были получить. В этой форме, вероятно, делает то, что вы хотите:
<?php
class ShopProduct {
public $title;
public $producerSurName;
public $producerFirstName;
public $price = 0;
public function __construct (
$title,
$firstName,
$surName,
$price
)
{
$this->title = $title;
$this->producerFirstName = $firstName;
$this->producerSurName = $surName;
$this->price = $price;
}
public function getProducer () {
return $this->producerFirstName . " " . $this->producerSurName;
}
}
class ShopProductWriter {
public function write ($shopProduct){
$str=$shopProduct->title . ":" . $shopProduct->getProducer()
. " (".$shopProduct->price.")\n";
print $str;
}
}
$product1 = new ShopProduct("My Antonia", "Willa", "Cather", 5.99);
$writer = new ShopProductWriter();
$writer->write($product1);