Передача результата функции в качестве параметра объекту

101
06 мая 2021, 08:30

Прошу помочь с учебным заданием по главе "Интерфейсы":

Организуйте клонирование объектов класса User таким образом, чтобы пароль пользователя password в клонированном объекте отличался от оригинала.

Стоит сказать, что в главе была описана иерархия наследования пользователей сайта User -> FrontUser (например).

Не понимаю сути задания, а спросить не у кого: Как я понял, нужно создать класс User с базовыми переменными (и методами), которые будут полезны наследникам (FrontUser).

interface Pass {
    public function setPass();
}
class User implements Pass
{
    public $first_name;
    public $last_name;
    public $email;
    public $password;
    public function __construct (
        $email,
        $password,
        $first_name = null,
        $last_name = null)
    {
        $this->first_name = $first_name;
        $this->last_name = $last_name;
        $this->email = $email;
        $this->password = $password;
    }
    public function setPass() {
        $this->password = function() {
            $alphabet = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890';
            $pass = array(); //remember to declare $pass as an array
            $alphaLength = strlen($alphabet) - 1; //put the length -1 in cache
            for ($i = 0; $i < 8; $i++) {
                $n = rand(0, $alphaLength);
                $pass[$i] = $alphabet[$n];
        }
            return implode($pass); //turn the array into a string
        };
    }
    public function __clone() {
        $this->password = function() {
            $alphabet = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890';
            $pass = array(); //remember to declare $pass as an array
            $alphaLength = strlen($alphabet) - 1; //put the length -1 in cache
            for ($i = 0; $i < 8; $i++) {
                $n = rand(0, $alphaLength);
                $pass[$i] = $alphabet[$n];
        }
            return implode($pass); //turn the array into a string
        };
    }
}

Создаем объект этого класса

$userx = new User(
'example@mail.ru',
'pa$$w0rd',
'Andrey',
'Ivanov');

После чего клонируем объект userx

$usercloned = clone $userx;

Прошу подсказать - куда двигаться дальше?

READ ALSO
Постеры к видео

Постеры к видео

Как в php 7 загрузить видео и сразу же сделать скирншот видео по середине видео и сохранить его(создать постер к видео) без сторонних ffmepg и тп

92
При редактировании статьи, как повторно отправить имя изображения

При редактировании статьи, как повторно отправить имя изображения

Помогите, пожалуйстаНикак не могу при редактировании статьи придумать, как "не потерять" изображение из формы

106
Цикл запроса mysql php

Цикл запроса mysql php

Подскажите пожалуйста, есть такой массив:

101