Конструктор php не работает должным образом в программе

Пожалуйста, обратитесь к этому Ввод кода

Этот код не дает ожидаемого результата

class User{
        protected $name;
        protected $age;

        public function __construct($name, $age){
            $this->name = $name;
            $this->age = $age;
        }
    }

    class Customer extends User{
        private $balance;

        public function __construct($name, $age, $balance){
            $this->balance = $balance;
        }

        public function pay($amount){
            return $this->name . ' paid $' . $amount;
        }
    }

    $customer1 = new Customer('Adithya', 23, 50);
    echo $customer1->pay(100);

Это дает только это Может кто-нибудь объяснить причину?

Потому что вы никогда не вызываете функцию построения родительского класса.

Daedalus 21.11.2022 07:10

Подскажите, пожалуйста, как мне его назвать?

Adithya Nethmini 21.11.2022 07:12
parent::__construct($params, $go, $here). Кроме того, мы не принимаем здесь изображения кода. Я уже отформатировал ваш блок кода ранее, но в будущем вам нужно будет сделать это самостоятельно.
Daedalus 21.11.2022 07:13

Вам нужно вызвать функцию построения родительского класса parent::__construct(); stackoverflow.com/questions/1557608/…

Tufail Ahmad 21.11.2022 07:13

Добро пожаловать в stackoverflow adithya! было бы лучше, если бы вы проверили руководство по php. вы можете вызвать конструктор User в конструкторе Customer, используя parent::__construct().

Bagus Tesa 21.11.2022 07:14
Отношения "многие ко многим" в Laravel с методами присоединения и отсоединения
Отношения "многие ко многим" в Laravel с методами присоединения и отсоединения
Отношения "многие ко многим" в Laravel могут быть немного сложными, но с помощью Eloquent ORM и его моделей мы можем сделать это с легкостью. В этой...
В PHP
В PHP
В большой кодовой базе с множеством различных компонентов классы, функции и константы могут иметь одинаковые имена. Это может привести к путанице и...
Карта дорог Беладжар PHP Laravel
Карта дорог Беладжар PHP Laravel
Laravel - это PHP-фреймворк, разработанный для облегчения разработки веб-приложений. Laravel предоставляет различные функции, упрощающие разработку...
Тенденции развития PHP - почему люди выбирают его?
Тенденции развития PHP - почему люди выбирают его?
Framework ранее был известен как Personal Home Page, а затем был переименован в Hypertext Preprocessor. Это наиболее широко используемый язык для...
Принцип подстановки Лискова
Принцип подстановки Лискова
Принцип подстановки Лискова (LSP) - это принцип объектно-ориентированного программирования, который гласит, что объекты суперкласса должны иметь...
0
5
62
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Добавьте следующую строку в конструктор класса Customer, чтобы конструктор родительского класса вызывался с правильными параметрами.

parent::__construct($name, $age);

Итак, код выглядит следующим образом

(У меня есть added a line in the pay method, чтобы сделать это более значимым)

<?php
class User{
        protected $name;
        protected $age;

        public function __construct($name, $age){
            $this->name = $name;
            $this->age = $age;
        }
    }

    class Customer extends User{
        private $balance;

        public function __construct($name, $age, $balance){
            parent::__construct($name, $age);
            $this->balance = $balance;
        }

        public function pay($amount){
            $this->balance = $this->balance - $amount;
            return $this->name . ' paid ' . $amount;
        }

        public function getbalance(){
            return $this->name . ' now has ' . $this->balance ;
        }

    }

    $customer1 = new Customer('Adithya', 23, 50);
    echo $customer1->pay(100);

    echo "<br>";

    echo $customer1->getbalance();
    ?>

Дисплей будет:

Adithya paid 100
Adithya now has -50

(изначально Адитья имеет баланс 50, но он заплатил 100, так что новый баланс равен -50)

Ответ принят как подходящий
    class Customer extends User{
    private $balance;

    public function __construct($name, $age, $balance){
        $this->balance = $balance;
        parent::__construct($name,$age,$balance);
    }

    public function pay($amount){
        return $this->name . ' paid $' . $amount;
    }
}

Как сейчас написано, ваш ответ неясен. Пожалуйста, отредактируйте , чтобы добавить дополнительные сведения, которые помогут другим понять, как это отвечает на заданный вопрос. Вы можете найти больше информации о том, как писать хорошие ответы в справочном центре.

Community 23.11.2022 08:19

Другие вопросы по теме