Чат Telegram
Группа ВКонтакте
Новый комментарий


Galay 24.07.2018 в 13:03
abstract class HumanAbstract
{
    private $name;
    public function __construct(string $name)
    {
        $this->name = $name;
    }
    public function getName(): string
    {
        return $this->name;
    }
    abstract public function getGreetings(): string;
    abstract public function getMyNameIs(): string;

    public function introduceYourself(): string
    {
        return $this->getGreetings() . '! ' . $this->getMyNameIs() . ' ' . $this->getName() . '.';
    }
}

class RussianHuman extends HumanAbstract
{

     public function getGreetings(): string
     {
        return  'Привет';
     }
     public function getMyNameIs(): string
     {
        return    'Меня зовут';
     }
}
class EnglishHuman extends HumanAbstract
{
     public function getGreetings(): string
     {
        return  'Hi';
     }
     public function getMyNameIs(): string
     {
        return  'My name is';
     }
}

$russian = new RussianHuman('Иван');

$english = new EnglishHuman('John');

echo $russian->introduceYourself();
echo '<br>';
echo $english->introduceYourself();

echo '<br>';
echo '<hr>';

Разобрался

ivashkevich 24.07.2018 в 16:00

Всё так, методы возвращают строки, нужно их просто вывести:

echo $russian->introduceYourself();
echo $english->introduceYourself();

А так - всё отлично!

Galay 24.07.2018 в 16:03

Да, спасибо, разобрался.

Ilon 01.08.2018 в 13:56
<?php

    abstract class HumanAbstract{

        protected $name;

        public function __construct($name){
            $this->name = $name;
        }
        public function getName(){
            return $this->name;
        }

        abstract public function getGreetings();
        abstract public function getMyNameIs();

        public function introduceYourself(){
            return $this->getGreetings()." ! ".$this->getMyNameIs()." ".$this->getName()." .";
        }
    }

    class RussianHuman extends HumanAbstract{
        public function getGreetings(){
            return "Привет";
        }
        public function getMyNameIs(){
            return "Меня зовут ";
        }
    }

    class EnglishHuman extends HumanAbstract{
        public function getGreetings(){
            return "Hello ";
        }
        public function getMyNameIs(){
            return "My name is ";
        }
    }

    $russian = new RussianHuman("Амир");
    $english = new EnglishHuman("Amir");

    echo $russian->introduceYourself()."<br>";
    echo $english->introduceYourself()."<br>";
ivashkevich 03.08.2018 в 15:37

Хорошо.

computerix 04.09.2018 в 12:46
<?
abstract class HumanAbstract
{
    private $name;

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

    public function getName(): string
    {
        return $this->name;
    }

    abstract public function getGreetings(): string;
    abstract public function getMyNameIs(): string;

    public function introduceYourself(): string
    {
        return $this->getGreetings() . '! ' . $this->getMyNameIs() . ' ' . $this->getName() . '.';
    }
}
class RussianHuman extends HumanAbstract
{
    private $name;
    public function __construct(string $name)
    {
        $this->name = $name;
    }
    public function getMyNameIs(): string
    {
         return 'Меня зовут';
    }
    public function getGreetings(): string
 {
     return 'Привет';
 }
}
class EnglishHuman extends HumanAbstract
{
    private $name;
    public function __construct(string $name)
    {
        $this->name = $name;
    }
    public function getMyNameIs(): string
    {
         return 'My name is';
    }
    public function getGreetings(): string  
 {
     return 'Hi';
 }  
}
$rus = new RussianHuman('Иван');
$rus->introduceYourself();
$en = new EnglishHuman('Bob');
$en->introduceYourself();
?>
ivashkevich 05.09.2018 в 23:42

Всё ок, только стоит echo добавить перед $rus->introduceYourself();

Benya 30.09.2018 в 14:11
class UkraineHuman extends HumanAbstract
{
    public function getGreetings(): string
    {
        return 'Привет. ';
    }

    public function getMyNameIs(): string
    {
        return 'Меня зовут ';
    }

}

class EnglishHuman extends HumanAbstract
{
    public function getGreetings(): string
    {
        return 'Hi. ';
    }

    public function getMyNameIs(): string
    {
        return 'My name is ';
    }
}

$ukr = new UkraineHuman('Микола');
$eng = new EnglishHuman('Nikolay');

echo $ukr->introduceYourself();
echo $eng->introduceYourself();
ivashkevich 02.10.2018 в 21:41

А где метод introduceYourself?

DmitryGavrilov 02.10.2018 в 10:44
<?php

abstract class HumanAbstract
{

    private $name;

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

    public function getName(): string
    {

        return $this->name;

    }

    abstract public function getGreetings(): string;

    abstract public function getMyNameIs(): string;

    public function introduceYourself(): string
    {

        return $this->getGreetings() . '! ' . $this->getMyNameis() . ' ' . $this->getName() . '.';

    }

}

class RussianMan extends HumanAbstract
{

    public function getGreetings(): string
    {

        return 'Здравствуйте';

    }

    public function getMyNameIs(): string
    {

        return 'Имя моё - ';

    }

}

class EnglishMan extends HumanAbstract
{

    public function getGreetings(): string
    {

        return ' Hello my friend';

    }

    public function getMyNameIs(): string
    {

        return 'The name of mine is - ';

    }

}

$Russia = new russianMan('Петр Первый');
echo '<br>';
$England = new englishMan('Benedict Camberbatch, as you know');

echo $Russia->introduceYourself();
echo $England->introduceYourself();
ivashkevich 02.10.2018 в 21:41

Отлично

SBTesla 06.10.2018 в 10:37
<?php
abstract class HumanAbstract {
     private $name;
     public function __construct($name)
     {
          $this->name = $name;
     }
     public function getName()
     {
          return $this->name;
     }

     abstract public function getGreetings(): string ;
     abstract public function getMyNameIS(): string ;

     public function introduceYourself(): string
     {
          return $this->getGreetings() . ' ! ' . $this->getMyNameIS() . ' ' . $this->getName() . ' . ';
     }
}

class RussianHuman extends HumanAbstract {
     public function getGreetings(): string
     {
          return ' Привет ';
     }

     public function getMyNameIS(): string
     {
          return 'Меня зовут';
     }
}

class EnglishHuman extends HumanAbstract {
     public function getGreetings(): string
     {
          return ' Hello ';
     }

     public function getMyNameIS(): string
     {
          return 'My Name is';
     }
}

$rus = new RussianHuman('Вася');
$eng = new EnglishHuman('Greg');

echo $rus->introduceYourself();
echo '<br>';
echo $eng->introduceYourself();
ivashkevich 06.10.2018 в 14:32

Отлично!!!

ArtemijeKA 09.10.2018 в 09:44
class RussianHuman extends HumanAbstract {
    public function getGreetings(): string {
        return 'Привет';
    }

    public function getMyNameIs(): string {
        return 'Мое имя';
    }
}

class EnglishHuman extends HumanAbstract {
    public function getGreetings(): string {
        return 'Hello';
    }

    public function getMyNameIs(): string {
        return 'My name is';
    }
}

$nikolay = new RussianHuman('Коля');
$stepan = new RussianHuman('Степка');
echo $nikolay->introduceYourself() . '<br>'; // Привет! Мое имя Коля.
echo $stepan->introduceYourself() . '<br>'; // Привет! Мое имя Степка.
ivashkevich 12.10.2018 в 08:37

Супер гуд!

ArtemijeKA 12.10.2018 в 15:09

Спасибо!

Protos 03.11.2018 в 01:08
class RuusianHuman extends HumanAbstract{

    public function getMyNameIs(): string
    {
        // TODO: Implement getMyNameIs() method.
        return 'Меня зовут ';
    }
    public function getGreetings(): string
    {
        // TODO: Implement getGreetings() method.
        return 'Привет';
    }
}

class EnglishHuman extends HumanAbstract{
    public function getMyNameIs(): string
    {
        // TODO: Implement getMyNameIs() method.
        return 'My nsme is';
    }
    public function getGreetings(): string
    {
        // TODO: Implement getGreetings() method.
        return 'Hello';
    }
}
$russian = new RuusianHuman('Иван');
echo $russian->introduceYourself();
$english = new EnglishHuman('John');
echo $english->introduceYourself();
ivashkevich 04.11.2018 в 00:22

Хорошо, но комментарии TODO нужно убрать. Они создаются для того, чтобы не забыть что-то сделать.

zebra 05.11.2018 в 00:04

Домашка:)

abstract class HumanAbstract
{
    private $name;

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

    public function getName(): string
    {
        return $this->name;
    }

    abstract public function getGreetings(): string;
    abstract public function getMyNameIs(): string;

    public function introduceYourself(): string
    {
        return $this->getGreetings() . '! ' . $this->getMyNameIs() . ' ' . $this->getName() . '.';
    }
}

class RussianHuman extends HumanAbstract
{
    public function getGreetings(): string
    {
        return 'Привет';
    }

    public function getMyNameIs(): string 
    {
        return 'Меня зовут';
    }
}

$rusObj = new RussianHuman('Игорь');
echo $rusObj->introduceYourself();
echo '<br>';

class EnglishHuman extends HumanAbstract
{
    public function getGreetings(): string
    {
        return 'Hello';
    }

    public function getMyNameIs(): string 
    {
        return 'My name is';
    }
}

$engObj = new EnglishHuman('Mike');
echo $engObj->introduceYourself();
ivashkevich 05.11.2018 в 09:15

Отлично =)

Todd 05.11.2018 в 01:34
abstract class HumanAbstract {

    private $name;

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

    public function getName(): string {
        return $this->name;
    }

    abstract public function getGreetings(): string;

    abstract public function getMyNameIs(): string;

    public function introduceYourself(): string {
        return $this->getGreetings() . '! ' . $this->getMyNameIs() . ' ' . $this->getName() . '.';
    }

}

class RussianHuman extends HumanAbstract {

    public function getGreetings(): string {
        return 'Привет';
    }

    public function getMyNameIs(): string  {
        return 'Меня зовут';
    }
}

class EnglishHuman extends HumanAbstract {

    public function getGreetings(): string  {
        return 'Hi';
    }

    public function getMyNameIs(): string  {
        return 'My name is';
    }

}

$rus = new RussianHuman('Иван');
$eng = new EnglishHuman('Todd');

echo $rus->introduceYourself() . '<br>';
echo $eng->introduceYourself();
ivashkevich 05.11.2018 в 09:16

Супер! =)

demyanovpaul@yandex.ru 07.11.2018 в 09:26

Отнаследуйте от него 2 класса: RussianHuman и EnglishHuman.
Реализуйте в них методы getGreetings(), которые будут возвращать приветствие на разных языках, вроде «Привет».
Реализуйте в них методы getMyNameIs(), которые будут возвращать на разных языках слова «Меня зовут».
В итоге метод introduceYourself должен возвращать строку, вроде «Привет! Меня зовут Иван.»
Создайте объекты этих классов и заставьте их поздороваться.

<?php
abstract class HumanAbstract
{
    private $name;

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

    public function getName(): string
    {
        return $this->name;
    }

    abstract public function getGreetings(): string;
    abstract public function getMyNameIs(): string;

    public function introduceYourself(): string
    {
        return $this->getGreetings() . '! ' . $this->getMyNameIs() . ' ' . $this->getName() . '.';
    }
}

class RussianHuman extends HumanAbstract
{
    public function getGreetings(): string
    {
        return 'Привет';
    }

    public function getMyNameIs(): string
    {
        return 'Меня зовут';
    }
}

class EnglishHuman extends HumanAbstract
{
    public function getGreetings(): string
    {
        return 'Hello';
    }

    public function getMyNameIs(): string
    {
        return 'My name is';
    }
}

$russianPeople = new RussianHuman('Павел');
$englishPeople = new EnglishHuman('Alex');

echo $russianPeople->introduceYourself();
echo '<br>';
echo $englishPeople->introduceYourself();
ivashkevich 08.11.2018 в 10:35

Отлично!

bildep 18.11.2018 в 16:07
<?php
abstract class HumanAbstract
{
    private $name;

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

    public function getName(): string
    {
        return $this->name;
    }

    abstract public function getGreetings(): string;
    abstract public function getMyNameIs(): string;

    public function introduceYourself(): string
    {
        return $this->getGreetings() . '! ' . $this->getMyNameIs() . ' ' . $this->getName() . '.';
    }
}

class RussianHuman extends HumanAbstract
{
    public function getGreetings(): string
    {
        return 'Привет';
    }

    public function getMyNameIs(): string
    {
        return 'Меня зовут';
    }
}

class EnglishHuman extends HumanAbstract
{
    public function getGreetings(): string
    {
        return 'Hello';
    }

    public function getMyNameIs(): string
    {
        return 'My name is';
    }
}

$men1 = new RussianHuman('Иван');
$men2 = new EnglishHuman('John');

echo $men1->introduceYourself();
echo $men2->introduceYourself();
ivashkevich 19.11.2018 в 21:51

Супер! Быстро осваиваешь материал.

CarfikDK 18.12.2018 в 15:43

Готово)

<?php

abstract class HumanAbstract
{
    private $name;

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

    public function getName(): string
    {
        return $this->name;
    }

    abstract public function getGreetings(): string;
    abstract public function getMyNameIs(): string;

    public function introduceYourself(): string
    {
        return $this->getGreetings() . '! ' . $this->getMyNameIs() . ' ' . $this->getName() . '.';
    }
}

class RussianHuman extends HumanAbstract
{
    public function getGreetings(): string
    {
        return 'Привет';
    }

    public function getMyNameIs(): string
    {
        return 'Меня зовут' ;
    }
}

class EnglishMan extends HumanAbstract
{
    public function getGreetings(): string
    {
        return 'Hi';
    }

    public function getMyNameIs(): string
    {
        return 'My name is ' ;
    }
}

$russianHuman = new RussianHuman('Никита');
$englishHuman = new EnglishMan('Richard');

echo $russianHuman->introduceYourself();
echo '<br>';
echo $englishHuman->introduceYourself();
ivashkevich 18.12.2018 в 17:35

Супер!

vadymbilyi@gmail.com 23.12.2018 в 19:46
<?php 
abstract class HumanAbstract
{
    private $name;

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

    public function getName(): string
    {
        return $this->name;
    }

    abstract public function getGreetings(): string;
    abstract public function getMyNameIs(): string;

    public function introduceYourself(): string
    {
        return $this->getGreetings() . '! ' . $this->getMyNameIs() . ' ' . $this->getName() . '.';
    }
}

class RussianHuman extends HumanAbstract
{

    public function getGreetings(): string
    {
        return 'Привет';
    }
    public function getMyNameIs(): string
    {
        return 'Меня зовут';
    }
}

class EnglishHuman extends HumanAbstract
{

    public function getGreetings(): string
    {
        return 'Hello';
    }
    public function getMyNameIs(): string
    {
        return 'My name is';
    }
}

$russian = new RussianHuman('Иван');
$english = new EnglishHuman('Ivan');
echo $russian->introduceYourself();
echo $english->introduceYourself();
ivashkevich 24.12.2018 в 19:07

Отлично

alepawka 01.01.2019 в 21:18
    class RussianHuman extends HumanAbstract
    {
        public function getGreetings() 
        {
            return 'Привет';
        }
        public function getMyNameIs() 
        {
            return 'Меня зовут';
        }
    }
    class EnglishHuman extends HumanAbstract
    {
        public function getGreetings() 
        {
            return 'Hello';
        }
        public function getMyNameIs() 
        {
            return 'My name is';
        }
    }
    $leha = new RussianHuman('Алексей');
    $ben = new EnglishHuman('Ben');
    echo $leha->introduceYourself();
    echo '<br>';
    echo $ben->introduceYourself();
 ?>
ivashkevich 02.01.2019 в 20:59

Хорошо, но нужно добавить типы возвращаемых значений у методов. Почитайте о них в документации.

landialog 03.01.2019 в 02:11

class RussianHuman extends HumansAbstract
{
  public function getGreetings(): string
  {
      echo 'Привет ';
  }

  public function getMyNameIs(): string
  {
      echo ' меня зовут ';
  }
}

$ivan = new RussianHuman('Иван');
echo $ivan->introduceYourself();

class EnglishHuman extends HumansAbstract
{
    public function getGreetings(): string
    {
        echo 'Hello ';
    }

    public function getMyNameIs(): string
    {
        echo 'my name is ';
    }
}

$john = new EnglishHuman('Jogn');
echo $john->introduceYourself();
ivashkevich 03.01.2019 в 08:03

Отлично!

Bogdan 07.01.2019 в 14:06

EnglishHuman

<?php
require_once "HumanAbstract.php";

class EnglishHuman extends HumanAbstract
{
    public function getGreetings() : string
    {
        return 'Hello';
    }

    public function getMyNameIs() : string
    {
        return 'my name is';
    }
}

RussianHuman

<?php
require_once "HumanAbstract.php";

class RussianHuman extends HumanAbstract
{
    public function getGreetings() : string
    {
        return 'Привет';
    }

    public function getMyNameIs() : string
    {
        return 'меня зовут';
    }
}

index.php

<?php
require_once "EnglishHuman.php";
require_once "RussianHuman.php";

$engHum = new EnglishHuman('Alex');
$rusHum = new RussianHuman('Алеша');

echo $engHum->introduceYourself();
echo $rusHum->introduceYourself();
ivashkevich 07.01.2019 в 15:39

Супер!

Bugaga159 02.02.2019 в 14:26
class RussianHuman extends HumanAbstract
{
    public function getGreetings(): string
    {
        return 'Привет';
    }
    public function getMyNameIs(): string
    {
        return 'Меня зовут ';
    }

}
class EnglishHuman extends HumanAbstract
{
    public function getGreetings(): string
    {
        return 'Hello';
    }
    public function getMyNameIs(): string
    {
        return 'My name is ';
    }
}

$russian = new RussianHuman('Андрей');
$english = new EnglishHuman('Mark');
echo $russian->introduceYourself();
echo $english->introduceYourself();
ivashkevich 03.02.2019 в 23:54

Отлично!

excent63 10.02.2019 в 14:45

Привет! Спасибо за урок.
Вот что получилось:

class RussianHuman extends HumanAbstract
{
    public function getGreetings(): string
    {
        return 'Привет';
    }
    public function getMyNameIs(): string
    {
        return 'Меня зовут';
    }
}

class EnglishHuman extends HumanAbstract
{
    public function getGreetings(): string
    {
        return 'Hi';
    }
    public function getMyNameIs(): string
    {
        return 'My name';
    }
}

$russian = new RussianHuman('Иван');
$english = new EnglishHuman('Ivan');

echo $russian->introduceYourself().'<br>';
echo $english->introduceYourself();
ivashkevich 11.02.2019 в 11:18

Отлично!

arturshopengauer@mail.ru 25.02.2019 в 21:19
<?php

abstract class HumanAbstract
{
    private $name;

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

    public function getName(): string
    {
        return $this->name;
    }

    abstract public function getGreetings(): string;
    abstract public function getMyNameIs(): string;

    public function introduceYourself(): string
    {
        return $this->getGreetings() . '! ' . $this->getMyNameIs() . ' ' . $this->getName() . '.';
    }
}

class RussianHuman extends HumanAbstract
{
    public function getGreetings(): string
    {
        return 'Привет';
    }

    public function getMyNameIs(): string
    {
        return 'Меня зовут';
    }
}

class EnglishHuman extends HumanAbstract
{
    public function getGreetings(): string
    {
        return 'Hello';
    }

    public function getMyNameIs(): string
    {
        return 'My name is';
    }
}

$rus = new RussianHuman('Василий');
echo $rus->introduceYourself() . '<br>';

$eng = new EnglishHuman('Elton John');
echo $eng->introduceYourself();
ivashkevich 26.02.2019 в 09:37

Супер!

Evgeny 11.03.2019 в 22:25

<?php

abstract class HumanAbstract
{

    private $name;

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

    public function getName(): string
    {
        return $this->name;
    }

    abstract public function getGreetings(): string;

    abstract public function getMyNameIs(): string;

    public function introduceYourself(): string
    {
        return $this->getGreetings() . '! ' . $this->getMyNameIs() . ' ' . $this->getName() . '.' . '<br>';
    }
}

class RussianHuman extends HumanAbstract
{

    public function getGreetings(): string
    {
        return 'Привет';
    }

    public function getMyNameIs(): string
    {
        return 'Меня зовут';
    }
}

class EnglishHuman extends HumanAbstract
{

    public function getGreetings(): string
    {
        return 'Hello';
    }

    public function getMyNameIs(): string
    {
        return 'My name is';
    }
}

$russianhuman = new RussianHuman('Иван');
echo $russianhuman->introduceYourself();

$englishhuman = new EnglishHuman('Alex');
echo $englishhuman->introduceYourself();
ivashkevich 12.03.2019 в 09:39

Отлично!

arhipow@mail.ru 20.03.2019 в 11:48
abstract class HumanAbstract
{
    protected $name;

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

    public function getName(): string
    {
        return $this->name;
    }

    abstract public function getGreetings(): string;
    abstract public function getMyNameIs(): string;

    public function introduceYourself(): string
    {
        return $this->getGreetings() . '! ' . $this->getMyNameIs() . ' ' . $this->getName() . '.';
    }
}

class RussianHuman extends HumanAbstract
{
    public function getGreetings(): string
    {
        return 'Привет!';
    }
    public function getMyNameIs(): string
    {
        return 'Меня зовут';
    }
}

class EnglishHuman extends HumanAbstract
{
    public function getGreetings(): string
    {
        return 'Hello!';
    }
    public function getMyNameIs(): string
    {
        return 'My name is';
    }
}
$rus = new RussianHuman('Дмитрий');
echo $rus->introduceYourself();
$rus = new EnglishHuman('Дмитрий');
echo $rus->introduceYourself();
ivashkevich 20.03.2019 в 21:10

Ок, только тогда уж Dmitry =)

babls2332@gmail.com 28.03.2019 в 19:25
<?php
/**
 * Created by PhpStorm.
 * User: Андрей
 * Date: 28.03.2019
 * Time: 18:10
 */

abstract class HumanAbstract
{
    private $name;

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

    public function getName(): string
    {
        return $this->name;
    }

    abstract public function getGreetings(): string;
    abstract public function getMyNameIs(): string;

    public function introduceYourself(): string
    {
        return $this->getGreetings() . '! ' . $this->getMyNameIs() . ' ' . $this->getName() . '.';
    }
}

<?php
require_once 'HumanAbstract.php';

class RussianHuman extends HumanAbstract
{
    function getGreetings(): string
    {
        // TODO: Implement getGreetings() method.
        return 'Привет';

    }

    function getMyNameIs(): string
    {
        // TODO: Implement getMyNameIs() method.
        return 'Меня зовут ';
    }
}

<?php
require_once 'HumanAbstract.php';

class EnglishHuman extends HumanAbstract
{
    function getGreetings(): string
    {
        // TODO: Implement getGreetings() method.
        return 'Hello';
    }

    function getMyNameIs(): string
    {
        // TODO: Implement getMyNameIs() method.
        return 'My name is ';
    }
}

<?php
require_once 'EnglishHuman.php';
require_once 'RussianHuman.php';

$english = new EnglishHuman('Andrew');
$russian = new RussianHuman('Андрей');

echo $english->introduceYourself().'<br>';
echo $russian->introduceYourself().'<br>';
ivashkevich 29.03.2019 в 16:29

Комментарии ToDo можно убрать - вы же уже сделали, то что в них требуется.

babls2332@gmail.com 29.03.2019 в 16:46

Вообще правильно?

ivashkevich 29.03.2019 в 17:41

Конечно) Отлично!

Boodoo 11.04.2019 в 06:24
<?php
    abstract class HumanAbstract
    {
        private $name;

        public function __construct($name)
        {
            $this->name = $name;
        }
        public function getName() : string
        {
            return $this->name;
        }

        abstract public function getGreetings() : string;
        abstract public function getMyNameIs() :string;

        public function introduceYourself() : string
        {
            return $this->getGreetings() . $this->getMyNameIs() . ' ' . $this->getName() . '!';
        }
    }

    class RussianHuman extends HumanAbstract
    {
        private $name;

        public function __construct($name)
        {
            parent::__construct($name);
        }
        public function getGreetings() : string
        {
            return 'Привет!';
        }
        public function getMyNameIs() : string
        {
            return 'Меня зовут ';
        }
    }

    class EnglishHuman extends HumanAbstract
    {
        private $name;

        public function __construct($name)
        {
            parent::__construct($name);
        }
        public function getGreetings() : string
        {
            return 'Halo! ';
        }
        public function getMyNameIs() : string
        {
            return 'My name is ';
        }
    }

    $test1 = new EnglishHuman('Max');
    $test2 = new RussianHuman('Макс');
    echo $test1->introduceYourself();
    echo $test2->introduceYourself();
ivashkevich 12.04.2019 в 10:44

Для чего в наследниках конструкторы?

Boodoo 12.04.2019 в 16:20

Век живи, век учись. На автомате написал, задумался видимо....

polvanovv 19.04.2019 в 11:10
<?php
abstract  class HumanAbstract
{
    private $name;

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

    public function getName():string
    {
        return $this->name;
    }

    abstract public function getGreetings(): string;
    abstract public function getNameIs(): string;

    public function introduseYourself():string
    {
        return $this->getGreetings() . '! ' . $this->getNameIs() . ' ' . $this->getName() . '.';
    }
}

class RussianHuman extends HumanAbstract
{
    public function getGreetings(): string
    {
        return 'Привет!';
    }

    public function getNameIs(): string
    {
        return 'Меня зовут';
    }

}

class EnglishHuman extends  HumanAbstract
{

    public function getGreetings(): string
    {
        return 'Hello!';
    }

    public function getNameIs(): string
    {
        return 'My name is';
    }
}

$russian = new RussianHuman('Петя');
echo $russian->introduseYourself();
echo '<br>';

$english = new EnglishHuman('Arnold');
echo  $english->introduseYourself();
ivashkevich 19.04.2019 в 17:33

Отлично!

artemship 07.05.2019 в 13:18
<?php

abstract class HumanAbstract
{
    private $name;

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

    public function getName(): string
    {
        return $this->name;
    }

    abstract public function getGreetings(): string;

    abstract public function getMyNameIs(): string;

    public function introduceYourself(): string
    {
        return $this->getGreetings() . '! ' . $this->getMyNameIs() . ' ' . $this->getName() . '.';
    }
}

class RussianHuman extends HumanAbstract
{
    public function getGreetings(): string
    {
        return 'Привет';
    }

    public function getMyNameIs(): string
    {
        return 'Меня зовут';
    }
}

class EnglishHuman extends HumanAbstract
{
    public function getGreetings(): string
    {
        return 'Hello';
    }

    public function getMyNameIs(): string
    {
        return 'My name is';
    }
}

$russian = new RussianHuman('Владимир');
$american = new EnglishHuman('Donald');
echo $russian->introduceYourself();
echo '<br>';
echo $american->introduceYourself();
ivashkevich 10.05.2019 в 13:30

Отлично!

Dram 11.05.2019 в 12:39

Вроде разобрался...

<?php

abstract class HumanAbstract
{
    private $name;

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

    public function getName(): string
    {
        return $this->name;
    }

    abstract public function getGreetings(): string;
    abstract public function getMyNameIs(): string;

    public function introduceYourself(): string
    {
        return $this->getGreetings() . '! ' . $this->getMyNameIs() . ' ' . $this->getName() . '.';
    }
}

class RussianHuman extends HumanAbstract
{
    public function getGreetings(): string
    {
        return 'Привет';
    }
    public function getMyNameIs(): string
    {
        return 'Меня зовут';
    }

}

class EnglishHuman extends HumanAbstract
{
    public function getGreetings(): string
    {
        return 'Hello';
    }
    public function getMyNameIs(): string
    {
        return 'My name';
    }

}
$objectRussian = new RussianHuman('Петя');
$objectEnglish = new EnglishHuman('Jack');

echo $objectRussian->introduceYourself() . '<br>';
echo $objectEnglish->introduceYourself();
ivashkevich 11.05.2019 в 14:00

Отлично

Tina 09.06.2019 в 20:25

Домашка: 5 (Абстрактные классы)

abstract class HumanAbstract
{
    private $name;

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

    public function getName(): string
    {
        return $this->name;
    }

    abstract public function getGreetings(): string;
    abstract public function getMyNameIs(): string;

    public function introduceYourself(): string
    {
        return $this->getGreetings() . '! ' . $this->getMyNameIs() . ' ' . $this->getName() . '.';
    }
}

class RussianHuman extends HumanAbstract
{
    public function getGreetings(): string
    {
        return "Привет";
    }

    public function getMyNameIs(): string
    {
        return "Меня зовут";
    }
}

class EnglishHuman extends HumanAbstract
{
    public function getGreetings(): string
    {
        return 'Hello';
    }

    public function getMyNameIs(): string
    {
        return 'My name is ';
    }
}

$russianHuman = new RussianHuman("Таня");
$englishHuman = new EnglishHuman("Tania");

echo $russianHuman->introduceYourself()."<br>";
echo $englishHuman->introduceYourself()."<br>";
ivashkevich 10.06.2019 в 03:06

Курс для начинающих проходили? Что за подчеркивания в именах переменных?

$russian_human

Должно быть

$russianHuman

"Меня зовут " - пробел в конце. return $this->getGreetings() . '! ' . $this->getMyNameIs() . ' ' . $this->getName() . '.'; - ещё один пробел после $this->getMyNameIs(). Итого на выходе в строке два пробела подряд, а нужен один. Нужно внутри getMyNameIs() убрать пробел в конце.

ashfedor 12.06.2019 в 16:50
abstract  class  HumanAbstract
{
    private $name;
    public function __construct(string $name)
    {
        $this->name = $name;
    }
    public function getName(): string
    {
        return$this->name;
    }
    abstract public function getGreetings(): string;
    abstract public function getMyNameIs(): string;
    public function introduceYourself(): string
    {
        return $this->getGreetings() . '! ' . $this->getMyNameIs() . ' ' . $this->getName() . '.';
    }
}
class RussianHuman extends HumanAbstract
{
    public function getGreetings():string
    {
        return 'Привет';
    }
    public function getMyNameIs(): string
    {
        return 'меня зовут';
    }

}

class EnglishHuman extends HumanAbstract
{
    public function getGreetings():string
    {
        return 'Hello';
    }
    public function getMyNameIs(): string
    {
        return 'my name is';
    }

}
$russian = new RussianHuman('Русслан');

$english = new EnglishHuman('John');

echo $russian -> introduceYourself();
echo '<br>';
echo $english->introduceYourself();
ivashkevich 12.06.2019 в 18:13
return$this->name;

Должен быть пробел.

$russian -> introduceYourself();

Пробелов быть не должно.

В остальном - отличная работа.

rpash151 23.06.2019 в 12:09
<?php

abstract class HumanAbstract
{
    protected $name;

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

    public function getName(): string
    {
        return $this->name;
    }

    abstract public function getGreetings(): string;

    abstract public function getMyNameIs(): string;

    public function introduceYourself(): string
    {
        return $this->getGreetings() . '! ' . $this->getMyNameIs() . ' ' . $this->getName() . '.';
    }
}

class RussianMan extends HumanAbstract
{
    public function getGreetings(): string
    {
        return 'Привет ';
    }
    public function getMyNameIs(): string
    {
        return 'Меня зовут ';
    }
}
class EnglishMan extends HumanAbstract
{
    public function getGreetings(): string
    {
        return 'Hello ';
    }
    public function getMyNameIs(): string
    {
        return 'My name is ';
    }
}

$rus= new RussianMan(Иван);
$eng= new EnglishMan(Tom);
echo $rus->introduceYourself();
echo '<br>';
echo $eng->introduceYourself();
ivashkevich 23.06.2019 в 17:53
protected $name;

В дочернем классе не используется доступ к свойству. Значит private.

$rus= new RussianMan(Иван);
$eng= new EnglishMan(Tom);

В аргументах должны передаваться строки, в кавычках. А у вас - константы, повезло, что имена без пробелов.

rpash151 23.06.2019 в 18:01

Понял,спасибо

Moskva 03.07.2019 в 13:11
class RussianHuman extends HumanAbstract{

    public function getGreetings(): string{
        return 'Привет';
    }
    public function getMyNameIs(): string
    {
        return 'Меня зовут';
    }
}

class EnglishHuman extends HumanAbstract{

    public function getGreetings(): string{
        return 'Hallo';
    }
    public function getMyNameIs(): string
    {
        return 'My name is';
    }
}

$ivan = new RussianHuman('Иван');
$djon = new EnglishHuman('Jhonny');

echo $ivan->introduceYourself();
echo '<br>';
echo $djon->introduceYourself();
ivashkevich 03.07.2019 в 19:25

Отлично

Iliusha99 18.07.2019 в 19:08
//Homework abstract classes

abstract class HumanAbstract
{
    private $name;

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

    public function getName():string {
        return $this->name;
    }

    abstract public function getGreetings(): string;
    abstract public function getMyNameIs(): string;

    public function introduceYourself():string {
        return $this->getGreetings().'! '.$this->getMyNameIs(). ' ' .$this->getName().'.';
    }
}

class RussianHuman extends HumanAbstract{

    public function getGreetings(): string
    {
        return 'Привет';
    }

    public function getMyNameIs(): string
    {
        return 'Меня зовут';
    }

}

class EnglishHuman extends HumanAbstract{

    public function getGreetings(): string
    {
        return 'Hello';
    }

    public function getMyNameIs(): string
    {
        return 'My name is';
    }
}

$firstPerson = new RussianHuman('Илья');
echo $firstPerson->introduceYourself();

echo '<br>';

$secondPerson = new EnglishHuman('Mark');
echo $secondPerson->introduceYourself();
ivashkevich 18.07.2019 в 19:31

Супер!

Iliusha99 18.07.2019 в 20:00

Спасибо, ваше уроки очень полезные для меня.

ivashkevich 19.07.2019 в 06:58

Пожалуйста)

Metey 19.07.2019 в 11:53
<?php

abstract class HumanAbstract
{
    private $name;

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

    public function getName(): string
    {
        return $this->name;
    }

    abstract public function getGreetings(): string;
    abstract public function getMyNameIs(): string;

    public function introduceYourself(): string
    {
        return $this->getGreetings() . '! ' . $this->getMyNameIs() . ' ' . $this->getName() . '.';
    }
}

class RussianHuman extends HumanAbstract
{
    public function getGreetings(): string
    {
        return 'Привет';
    }
    public function getMyNameIs(): string
    {
        return 'Меня зовут';
    }
}

class EnglishHuman extends HumanAbstract
{
    public function getGreetings(): string
    {
        return 'Hello';
    }
    public function getMyNameIs(): string
    {
        return 'My name is';
    }
}

$rus = new RussianHuman('Тимофей');
$eng = new EnglishHuman('Brayan');
echo $rus->introduceYourself() . '<br>';
echo $eng->introduceYourself() . '<br>';
ivashkevich 20.07.2019 в 14:37

Отлично

Bizzzon 20.07.2019 в 21:06
<?php
abstract class HumanAbstract
{
private $name;

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

public function getName(): string
{
return $this->name;
}

abstract public function getGreetings(): string;
abstract public function getMyNameIs(): string;

public function introduceYourself(): string
{
return $this->getGreetings() . ' ' . $this->getMyNameIs() . ' ' . $this->getName() . '.';
}
}
class RussianHuman extends HumanAbstract
{
    public function getGreetings(): string
    {
        return 'Привет,';
    }
    public function getMyNameIs(): string
    {
        return 'меня зовут ';
    }
}
class EnglishHuman extends HumanAbstract
{
    public function getGreetings(): string
    {
        return 'Hello,';
    }
    public function getMyNameIs(): string
    {
        return 'my name is ';
    }
}
$introduceRussian = new RussianHuman('Игорь');
echo $introduceRussian->introduceYourself();
echo '</br>';
$introduceEnglish = new RussianHuman('Antonio');
echo $introduceEnglish->introduceYourself();
ivashkevich 21.07.2019 в 05:32

Всё отлично, только отступы в абстрактном классе поехали.

webdev 23.07.2019 в 14:02
class RussianHuman extends HumanAbstract
{
    public function __construct(string $name)
    {
        parent::__construct($name);
    }

    public function getGreetings(): string
    {
        return 'Привет';
    }

    public function getMyNameIs(): string
    {
        return 'Мое имя';
    }
}

class EnglishHuman extends HumanAbstract
{
    public function __construct(string $name)
    {
        parent::__construct($name);
    }

    public function getGreetings(): string
    {
        return 'Hello';
    }

    public function getMyNameIs(): string
    {
        return 'My name is';
    }
}

$russian = new RussianHuman('Иван');
echo $russian->introduceYourself();

$english = new EnglishHuman('John');
echo $english->introduceYourself();
ivashkevich 23.07.2019 в 20:34

Отлично!

Reechniy 23.07.2019 в 15:56
<?php

abstract class HumanAbstract
{
    private $name;

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

    public function getName(): string
    {
        return $this->name;
    }

abstract public function getGreetings(): string;
abstract public function getMyNameIs(): string;

public function introduceYourself(): string
{
    return $this->getGreetings() . '! ' . $this->getMyNameIs() . ' '. $this->getName() . '.';
}
}
class RussianHuman extends HumanAbstract
{
    public function getGreetings(): string
    {
        return 'Привет!';
    }
    public function getMyNameIs(): string
    {
        return 'Меня зовут ';
    }
}

class EnglishHuman extends HumanAbstract
{
    public function getGreetings(): string
    {
        return 'Hello!';
    }
    public function getMyNameIs(): string
    {
        return 'My name is ';
    }
}

$rusGuy = new RussianHuman('Игорь');
$engGuy = new EnglishHuman('John');

echo $rusGuy->introduceYourself();
echo '<br>';
echo $engGuy->introduceYourself();
ivashkevich 23.07.2019 в 20:35

Два восклицательных знака после приветствия. В большинстве языков он один. И отступы поехали в абстрактном классе.

Blook 04.08.2019 в 13:14

Отредактировал абстрактный класс, сделав свойство name "protected", чтобы его можно было унаследовать дочерним классам и, помимо этого, использовать parent::__construct($name). Считается ли это правильным для абстрактных классов?

abstract class HumanAbstract 
{
    private $name;

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

    public function getName(): string 
    {
        return $this->name;
    }

    abstract public function getGreetings(): string;
    abstract public function getMyNameIs(): string;

    public function introduceYourself(): string 
    {
        return $this->getGreetings() . '! ' . $this->getMyNameIs() . ' ' . $this->getName();
    }
}

class RussianHuman extends HumanAbstract
{
    private $name;

    public function __construct(string $name)
    {
        parent::__construct($name);
    }

    public function getGreetings(): string 
    {
        return 'Привет';
    }

    public function getMyNameIs(): string 
    {
        return 'Меня зовут ' . $this->name;
    }
}

class EnglishHuman extends HumanAbstract
{
    private $name;

    public function __construct(string $name)
    {
        parent::__construct($name);
    }

    public function getGreetings(): string
    {
        return 'Hello';
    }

    public function getMyNameIs(): string 
    {
        return 'My name is ' . $this->name;
    }
}

$russHuman = new RussianHuman('Виктор');
$englishHuman = new EnglishHuman('Charlie');
echo $russHuman->introduceYourself();
echo '<br>';
echo $englishHuman->introduceYourself();
ivashkevich 04.08.2019 в 21:00

Чтобы использовать родительский контроллер вам не нужен прямой доступ к свойству name. Его следует оставить приватным

Blook 05.08.2019 в 21:02

Наверное я что-то неправильно делаю, но если я сделаю свойство name "private", не изменяя другой код, то получу на выходе
Привет! Меня зовут
Hello! My name is

ivashkevich 06.08.2019 в 20:18

Потому что напрямую к private-свойству родительского класса доступа нет. Но вы можете достучаться до него через геттер родительского класса, который является публичным.

gruimed 07.08.2019 в 13:06
class RussianHuman extends HumanAbstract
{
    public function getGreetings(): string
    {
        return "Утречко!";
    }

    public function getMyNameIs(): string
    {
        return 'Меня зовут';
    }
}

class EnglishHuman extends HumanAbstract
{
    public function getGreetings(): string
    {
        return "Morning!";
    }

    public function getMyNameIs(): string
    {
        return 'My name is';
    }
}

$rus = new RussianHuman('Иван');
$eng = new EnglishHuman('Bob');

echo $rus->introduceYourself();
echo $eng->introduceYourself();
ivashkevich 07.08.2019 в 17:00

Отлично

khuurak 17.08.2019 в 06:12
class RusHuman extends Human
{
    private $greetings;
    private $mynameis;

    public function __construct(string $name, string $greetings, string $mynameis)
    {
        parent::__construct($name);
        $this->greetings = $greetings;
        $this->mynameis = $mynameis;
    }

    public function getGreetings(): string
    {
        return $this->greetings;
    }

    public function getMyNameIs(): string
    {
        return $this->mynameis;
    }
}

class EngHuman extends Human
{
    private $greetings;
    private $mynameis;

    public function __construct(string $name, string $greetings, string $mynameis)
    {
        parent::__construct($name);
        $this->greetings = $greetings;
        $this->mynameis = $mynameis;
    }

    public function getGreetings(): string
    {
        return $this->greetings;
    }

    public function getMyNameIs(): string
    {
        return $this->mynameis;
    }
}

$rus_human = new RusHuman("Чингис", "Привет", "Меня зовут");
$eng_human = new EngHuman("Alex", "Hello", "My name is");

echo $rus_human->introduceYourSelf();
echo '<br>';
echo $eng_human->introduceYourSelf();
ivashkevich 18.08.2019 в 06:51

Зачем один и тот же код в двух классах? Он должен быть написан в родительском классе и использоваться в дочерних. Посмотрите решения других учеников.

khuurak 18.08.2019 в 08:15
class RusHuman extends Human
{
    public function getGreetings(): string
    {
        return 'Привет'
    }

    public function getMyNameIs(): string
    {
        return 'Меня зовут'
    }
}

class EngHuman extends Human
{
    public function getGreetings(): string
    {
        return 'Hello'
    }

    public function getMyNameIs(): string
    {
        return 'My name is'
    }
}

$rus_human = new RusHuman("Чингис");
$eng_human = new EngHuman("Alex");
echo $rus_human->introduceYourSelf();
echo '<br>';
echo $eng_human->introduceYourSelf();
ivashkevich 18.08.2019 в 13:28

А где код класса Human?
$rus_human - имена переменных пишутся в camelCase, без всяких подчеркушек.

khuurak 19.08.2019 в 04:00
abstract class Human
{
    private $name;
    public function __construct(string $name)
    {
        $this->name = $name;
    }

    public function getName(): string
    {
        return $this->name;
    }

    abstract public function getGreetings(): string;
    abstract public function getMyNameIs(): string;

    public function introduceYourself(): string
    {
        return $this->getGreetings() . '! ' . $this->getMyNameIs() . ' ' . $this->getName() . '.';
    }
}

class RusHuman extends Human
{
    public function getGreetings(): string
    {
        return 'Привет'
    }

    public function getMyNameIs(): string
    {
        return 'Меня зовут'
    }
}

class EngHuman extends Human
{
    public function getGreetings(): string
    {
        return 'Hello'
    }

    public function getMyNameIs(): string
    {
        return 'My name is'
    }
}

$rusHuman = new RusHuman("Чингис");
$engHuman = new EngHuman("Alex");
echo $rusHuman->introduceYourSelf();
echo '<br>';
echo $engHuman->introduceYourSelf();

Код целиком.

Спасибо за замечания! В следующий раз буду писать имена переменных в camelCase

ivashkevich 19.08.2019 в 04:15

Отлично. Только ; не хватает после return.

khuurak 19.08.2019 в 04:33

Кстати да, :)

Pro100Bah 02.09.2019 в 13:37
abstract class HumanAbstract
{
    private $name;

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

    public function getName(): string
    {
        return $this->name;
    }

    abstract public function getGreetings(): string;
    abstract public function getMyNameIs(): string;

    public function introduceYourself(): string
    {
        return $this->getGreetings() . '! ' . $this->getMyNameIs() . ' ' . $this->getName() . '.';
    }
}

class RussianHuman extends HumanAbstract
{
    public function getGreetings(): string
    {
        return 'Привет';
    }

    public function getMyNameIs(): string
    {
        return 'Меня зовут';
    }
}

class EnglishHuman extends HumanAbstract
{
    public function getGreetings(): string
    {
        return 'Hi';
    }

    public function getMyNameIs(): string
    {
        return 'My name is';
    }
}

$russianHuman = new RussianHuman('Даня');

$englishHuman = new EnglishHuman('Arnold');

echo $russianHuman->introduceYourself();
echo '<br>';
echo $englishHuman->introduceYourself();
echo '<br>';

Все равно путаюсь в реализации, пока не особо понятно, но если код работает, значит все правильно идет.

ivashkevich 02.09.2019 в 18:44

Отлично

Dreft 06.09.2019 в 06:35
    class RussianHuman extends HumanAbstract
    {
        public function getGreetings(): string
        {
            return 'Привет';
        }

        public function getMyNameIs(): string
        {
            return 'Меня зовут ';
        }
    }

    class EnglishHuman extends HumanAbstract
    {
        public function getGreetings(): string
        {
            return 'Hello';
        }

        public function getMyNameIs(): string
        {
            return 'My name is';
        }
    }

    $rus = new RussianHuman('Иван');
    echo $rus->introduceYourself();
    echo '<br>';
    $eng = new EnglishHuman('John');
    echo $eng->introduceYourself();
ivashkevich 06.09.2019 в 07:25

Отлично

XXX 25.09.2019 в 15:18
abstract class HumanAbstract
{
    private $name;

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

    public function getName(): string
    {
        return $this->name;
    }

    abstract public function getGreetings(): string;
    abstract public function getMyNameIs(): string;

    public function introduceYourself(): string
    {
        return $this->getGreetings() . '! ' . $this->getMyNameIs() . ' ' . $this->getName() . '.';
    }
}

class RussianHuman extends HumanAbstract
{
    private $name;

    public function __construct(string $name)
    {
        parent::__construct($name);
    }

    public function getGreetings(): string
    {
        return 'Привет';
    }

    public function getMyNameIs(): string
    {
        return 'Меня зовут ' . $this->name;
    }
}

class EnglishHuman extends HumanAbstract
{
    private $name;

    public function __construct(string $name)
    {
        parent::__construct($name);
    }

    public function getGreetings(): string
    {
        return 'Hi';
    }

    public function getMyNameIs(): string
    {
        return 'My name is ' . $this->name;
    }
}

$russianIvan = new RussianHuman('Иван');
$englishJhon = new EnglishHuman('Jhon');

echo $englishJhon->introduceYourself() . '<br>';
echo $russianIvan->introduceYourself();
ivashkevich 27.09.2019 в 17:48
    public function getName(): String

string с маленькой буквы

prinzplanloser0514@gmail.com 30.09.2019 в 20:34
<?php

abstract class HumanAbstract
{
    private $name;

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

    public function getName(): string
    {
        return $this->name;
    }

    abstract public function getGreetings(): string;

    abstract public function getMyNameIs(): string;

    public function introduceYourself(): string
    {
        return $this->getGreetings() . '! ' . $this->getMyNameIs() . ' ' . $this->getName() . '.';
    }
}

class RussianHuman extends HumanAbstract
{
    public function getGreetings():string
    {
        return 'Привет';
    }

    public function getMyNameIs(): string
    {
        return 'Меня зовут';
    }
}

class Englishhuman extends HumanAbstract
{
    public function getGreetings():string
    {
        return 'Hello';
    }

    public function getMyNameIs(): string
    {
        return 'My name is';
    }
}

$human1=new RussianHuman('Сергей');
$human2=new Englishhuman('Tom');

echo $human1->introduceYourself().PHP_EOL.'<br>';
echo $human2->introduceYourself();
ivashkevich 01.10.2019 в 09:14

Супер!

dliashchenko 13.10.2019 в 23:12
<?php
abstract class HumanAbstract
{
    private $name;

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

    public function getName(): string
    {
        return $this->name;
    }

    abstract public function getGreetings(): string;
    abstract public function getMyNameIs(): string;

    public function introduceYourself(): string
    {
        return $this->getGreetings() . '! ' . $this->getMyNameIs() . ' ' . $this->getName() . '.' . '<br/>';
    }
}
class RussianHuman extends HumanAbstract
{
    private $sayHello;
    private $myNameIs;

    public function __construct(string $sayHello, string $myNameIs, string $name)
    {
        parent::__construct($name);
        $this->sayHello = $sayHello;
        $this->myNameIs = $myNameIs;
    }
    public function getGreetings(): string
    {
        return $this->sayHello;
    }
    public function getMyNameIs(): string
    {
        return $this->myNameIs;
    }
}

class EnglishHuman extends HumanAbstract
{
    private $sayHello;
    private $myNameIs;

    public function __construct(string $sayHello, string $myNameIs, string $name)
    {
        parent::__construct($name);
        $this->sayHello = $sayHello;
        $this->myNameIs = $myNameIs;
    }
    public function getGreetings(): string
    {
        return $this->sayHello;
    }
    public function getMyNameIs(): string
    {
        return $this->myNameIs;
    }
}

$human1 = New EnglishHuman('Hello', 'My name is ', 'Denis');
$human2 = New RussianHuman('Привет', 'Меня зовут ', 'Денис');

echo $human1->introduceYourself();
echo $human2->introduceYourself();
ivashkevich 14.10.2019 в 08:36

Что ещё за value? Имена должны отражать своё назначение.

H3licoptero 01.11.2019 в 12:18
abstract class HumanAbstract
{
    private $name;

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

    public function getName(): string
    {
        return $this->name;
    }

    abstract public function getGreetings(): string;
    abstract public function getMyNameIs(): string;

    public function introduceYourself(): string
    {
        return $this->getGreetings() . '! ' . $this->getMyNameIs() . ' ' . $this->getName() . '.';
    }
}

class RussianHuman extends HumanAbstract
{
    public function getGreetings(): string
    {
        return 'Привет';
    }

    public function getMyNameIs(): string
    {
        return 'Меня зовут ';
    }
}

class EnglishHuman extends HumanAbstract
{
    public function getGreetings(): string
    {
        return 'Hi';
    }

    public function getMyNameIs(): string
    {
        return 'My name is ';
    }

}

$russianGreeting = new RussianHuman('Иван');
$englishGreeting = new EnglishHuman('Nick');

echo $russianGreeting->introduceYourself();
echo '<br>';
echo $englishGreeting->introduceYourself();
ivashkevich 02.11.2019 в 03:37

Отлично!

TheTigra 04.11.2019 в 17:34

Домашка:

class RussianHuman extends HumanAbstract {
    private $greeting = 'Привет';
    private $myNameIs = 'Меня зовут';
    public function getGreetings():string {
        return $this->greeting;
    }
    public function getMyNameIs():string {
        return $this->myNameIs;
    }
}
class EnglishHuman extends HumanAbstract {
    private $greeting = 'Hello';
    private $myNameIs = 'My name is';
    public function getGreetings() :string {
        return $this->greeting;
    }
    public function getMyNameIs() :string {
        return $this->myNameIs;
    }
}
$ivan=new RussianHuman('Иван');
$john=new RussianHuman('John');
echo $ivan->introduceYourself();
echo $john->introduceYourself();
ivashkevich 04.11.2019 в 19:49
    public function getGreetings() :string {
        return $this->greeting;
    }
    public function getMyNameIs() :string {
        return $this->myNameIs;
    }

Методы в обоих классах полностью одинаковые. Это значит что они у них общие и их можно вынести в родительский класс, откуда они его оба унаследуют. Но я вам всё же советую перечитать ДЗ, так как это несколько отличается от того, что было нужно сделать.

Логические задачи с собеседований