簡體   English   中英

致命錯誤:調用未定義的方法 ShopProductWriter::getProducer()

[英]Fatal error: Call to undefined method ShopProductWriter::getProducer()

我面臨一個問題:

致命錯誤:調用 C:\\OSPanel\\domains\\zandstra.com\\index.php 中第 37 行的未定義方法 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 ShopProductWriter$product1 ShopProductWriter是一個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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM