致命错误:调用未定义的方法 ShopProductWriter::getProducer()



我遇到了一个问题:

致命错误:在第 37 行调用 C:\OSPanel\domains\zandstra.com\index.php 中的未定义方法 ShopProductWriter::getProducer((

可能是什么原因造成的?

<?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;
}
}
$product1 = new ShopProduct (
"My Antonia",
"Willa",
"Cather",
"5.99"
);

class ShopProductWriter {
public function write ($shopProduct){
$str=$shopProduct->title . ":" . $shopProduct->getProducer()
. " (".$shopProduct->price.")n";
print $str;
}
}
$product1 = new ShopProductWriter("My Antonia", "Willa", "Cather", 5.99);
$writer = new ShopProductWriter();
$writer->write($product1);

这里

$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);

最新更新