Неустранимая ошибка: вызов неопределенного метода ShopProductWriter :: getProducer () - PullRequest
0 голосов
/ 07 февраля 2020

Я столкнулся с проблемой:

Неустранимая ошибка: вызов неопределенного метода ShopProductWriter :: getProducer () в C: \ OSPanel \ domains \ zandstra.com \ index. php в строке 37

Что могло вызвать это?

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

1 Ответ

0 голосов
/ 07 февраля 2020

Здесь

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