Как получить родительскую функцию для дочерней функции в php oop {$ this not work} - PullRequest
0 голосов
/ 10 октября 2018

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

Я новичок в ООП, поэтому мне нужна ваша помощь.

class Father
{
    public $name;
    public $age;
    public $email;

    function setInfo($fatherEmail)
    {
        $this->email    = $fatherEmail;
    }

    function getEmail()
    {
        return $this->email;
    }
}

$info = new Father;
$info->setInfo('father@gmail.com');

class Child extends Father
{
    function __construct()
    {
        // here should be father@gmail.com (that is what I want)
        parent::getEmail();
    }

}

$child_info  =  new Child;

1 Ответ

0 голосов
/ 10 октября 2018

Вам не нужен этот конструктор.Вам также не нужно создавать экземпляр базового класса.Посмотрите здесь:

<?php

class Father
{
    public $name;
    public $age;
    public $email;

    function setEmail($fatherEmail)
    {
        $this->email    = $fatherEmail;
    }

    function getEmail()
    {
        return $this->email;
    }
}



class Child extends Father
{

}

$child_info  =  new Child();
$child_info->setEmail('father@gmail.com');

echo $child_info->getEmail();

Посмотрите, как это работает здесь https://3v4l.org/CDfnM

Также рассмотрите возможность объявления видимости ваших функций и приватизации свойств:

class Father
{
    private $name;
    private $age;
    private $email;

    public function setEmail($fatherEmail)
    {
        $this->email    = $fatherEmail;
    }

    public function getEmail()
    {
        return $this->email;
    }
}

Имея private vars означает, что только этот класс может получить к нему доступ.Наличие protected переменных и функций означает, что они также доступны в дочерних классах.public доступно всем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...