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


SlipKnot 13.07.2018 в 05:36

Домашка:

<?php

class Cat
{
    private $name;
    private $color;
    public $weight;
    public function __construct (string $name, string $color) /*теперь при создании нового кота
                                                                мы должны указать имя и цвет*/
    {
        $this->name = $name;
        $this->color = $color;
    }
    public function sayHello()
    {
    echo 'Дратути, меня зовут ' . $this->name . ', моя шерстка цвета ' . $this->color . '<br>';
    } /* дополнение к методу приветствия */
    public function setName(string $name)
    {
        $this-> name = $name;
    }
    public function setColor(string $color) //метод для присвоения цвета шерсти кота
    {
        $this-> color = $color;
    }
    public function  getName():string
    {
        return $this->name;
    }
    public function getColor():string // получаем значения цвета шерсти
    {
        return $this->color;
    }
}
$cat1 = new Cat('Снежок', 'белый');
$cat1-> sayHello(); //Дратути, меня зовут Снег, моя шерстка цвета белый
$cat1-> setName('Снег');
$cat1->setColor('серый');
$cat2 = new Cat ('Барсик', 'рыжий');
$cat2->sayHello(); //Дратути, меня зовут Барсик, моя шерстка цвета рыжий
$cat1->sayHello(); //Дратути, меня зовут Снег, моя шерстка цвета серый
ivashkevich 14.07.2018 в 09:25

Отлично! Всё-таки перекрасили :D

Galay 18.07.2018 в 14:33
<?php
class Cat 
    {
        private $name;
        private $color;
        public function __construct(string $name, string $color){
            $this->name = $name;
            $this->color = $color;
        }

        public function sayHello() {
            echo "Привет, меня зовут {$this->name}, мой цвет - $this->color.";
        }
        public function getColor(): string {
            return $this->color;
        }
        public function setColor(string $color) {
             $this->color = $color;
        }

    }
    $cat1 = new Cat('Барсик','рыжий');
    // $cat1 -> name = 'Барсик';
    // $cat1 -> color = 'рыжий';
    echo '<br>';
    echo $cat1->sayHello();
    $cat2 = new Cat('Снежок','белый');
    // $cat1 -> name = 'Снежок';
    // $cat1 -> color = 'белый';
    echo '<br>';
    echo $cat2->sayHello();
    echo '<br>';
    $cat1->setColor('черный');
    echo $cat1->getColor();

и еще ругается на public function getColor(): string
Parse error: syntax error, unexpected ':', expecting ';' or '{' in codetester_source.php on line 14
а другой сервер не ругается. Почему?

ivashkevich 19.07.2018 в 09:48

Там где ругается - старая версия PHP.

echo $cat1->sayHello();

Вы тут вызываете echo, и внутри метода вызываете echo. Либо в методе возвращайте строку через return, либо тут не нужно делать echo, и оставить его только внутри метода.

Galay 19.07.2018 в 14:52

Странно, я тоже подумал версия старая, но проверил - 7.2
Вобщем не понятно, ну да ладно.. Про echo понял, действительно. Видимо не серьезная ошибка, интерпритатор не ругается.
Артем, а на ООП мало кто домашку в ответах выкладывает?

ivashkevich 21.07.2018 в 06:16

Да, пока мало кто выкладывает, только-только начали покупать вообще)

Ilon 01.08.2018 в 09:23

Домашка


<?php
    Class Cat{
        private $name;
        private $color;
        public $weight;

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

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

        public function getColor($color){
            $this->color = $color;
            return $this->color;
        }
        public function sayHello(){
            echo "Привет! Меня зовут ".$this->name." и мой цвет ".$this->color." и мой вес ".$this->weight."<br>";
        }
    }

    $cat1 = new Cat("Снежок", "белый");
    $cat1->weight = "3 кг";

    $cat2 = new Cat("Барсик", "рыжый");
    $cat2->weight = "3,5 кг";

    echo $cat1->sayHello();
    echo $cat2->sayHello();
?>
ivashkevich 03.08.2018 в 15:31
  1. Перед аргументами методов нужно указывать их тип.
  2. return в конструкторе не нужен.
  3. Геттеры не должны ничего изменять у объекта, в нашем случае даже не должны принимать никаких аргументов.
  4. Свойство weight стоит тоже сделать приватным и задаваться через сеттер, а доступ извне должен обеспечиваться через геттер.
computerix 30.08.2018 в 10:31
<?php
class Cat
{
    private $name;
    private $color;

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

    public function sayHello()
    {
        echo 'Привет! Меня зовут ' . $this->name . ',' . 'Мой цвет '. $this->color . '.';
    }

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

    public function setColor(string $color)
    {
        $this->color = $color;
    }

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

    public function getColor(): string
    {
        return $this->color;
    }
}
$cat1 = new Cat('Снежок','белый');
$cat1->sayHello(); 
$cat2 = new Cat('Барсик','рыжий');
$cat2->sayHello();
?>
ivashkevich 01.09.2018 в 13:29

Отлично

ArtemijeKA 12.09.2018 в 09:49

Случайно два сообщения написал) ДЗ:

ArtemijeKA 12.09.2018 в 09:50

1

public function sayHello()
    {
        echo 'Привет! Меня зовут ' . $this->name . '.';
        echo '<br>';
        echo 'Мой цвет ' . $this->color . ').';
    }

2

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

3

public function getColor(): string // возвращяемое значение будет строкой
    {
        return $this->color;
    }

4

*Не думаю что стоит)*

5

$cat1 = new Cat('Снежок', 'белый');
$cat2 = new Cat('Барсик', 'рыжий');

$cat1->sayHello();
$cat2->sayHello();

6 Спасибо!

ivashkevich 22.09.2018 в 10:08

Отлично!

jeeree 12.09.2018 в 13:44
class Cat
{
    public function __construct(string $name, $color, float $weight)
    {
        $this->name = $name;
        $this->color = $color;
        $this->weight = $weight;
    }
    private $name;
    private $color;
    private $weight;

    public function sayHello()
    {
        echo 'Дароу! My name is ' . $this->name . ', i have ' .
            $this->color . ' color and i weight ' . $this->weight . ' kilograms.','<br>';
    }
    public function setName(string $name)
    {
        $this->name = $name;
    }
    public function setColor(string $color)
    {
        $this->color = $color;
    }
    public function setWeight(float $weight)
    {
        $this->weight = $weight;
    }
    public function getName(): string
    {
        return $this->name;
    }
    public function getColor(): string
    {
        return $this->color;
    }public function getWeight(): float
{
    return $this->weight;
}
}
$cat1 = new Cat('Тупой и пакостный ИШАК', 'white', "5.3");
$cat1->sayHello();
jeeree 12.09.2018 в 13:45

все таки не совсем врубаюсь зачем мы прописывали сеттеры и геттеры, если все параметры задаются через конструктор, и для чего их можно использовать
пойду дальше по курсу, мб позже до меня дойдёт)

ArtemijeKA 14.09.2018 в 16:03

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

ivashkevich 22.09.2018 в 10:10

Все верно =)

DmitryGavrilov 13.09.2018 в 08:59
<?php

class Cat {
    private $name;
    private $color;

    public function __construct(string $name, string $color) {

        $this->name = $name;
        $this->color = $color;
    }

    public function SayHello(){
        echo 'Привет! Меня зовут ' . $this->name . '.' . '<br>' . 'мой цвет ' . $this->color . '.';

    }

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

    public function setColor (string $color) {
        $this->color = $color;
    }

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

    }

    public function getColor() : string  {
        return $this->color;
    }
}

$cat1 = new Cat('Маленький пушистый монстр', 'Ультрамарин');
$cat1->setName('Пушистый монстр');
$cat1->setColor('Ультрафиолетовый');
echo  $cat1->SayHello();

?>
ivashkevich 22.09.2018 в 10:10

Супер! Только имена методов всегда с маленькой буквы.

DmitryGavrilov 22.09.2018 в 22:49

Будет сделано Джеди-Мастер

Benya 28.09.2018 в 20:21
<?php

class Cat
{
    private $name;
    private $color;

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

    public function sayHello()
    {
        echo 'Привет! Меня зовут ' . $this->name . ','  . ' у меня  ' . $this->color . ' цвет' . '<br>';
    }

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

    public function setColor(string $color)
    {
        $this->color = $color;
    }

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

    public function getColor(): string
    {
        return $this->color;
    }
}

$cat1 = new Cat('Буся', 'желтый');
$cat1->sayHello();
$cat1 = new Cat('Снежек', 'белый');
$cat1->sayHello();
$cat1 = new Cat('Барсик', 'рыжый');
$cat1->sayHello();
ivashkevich 28.09.2018 в 23:14

Отлично!

SBTesla 03.10.2018 в 12:48
<?php

class Cat {

     private $name;
     private $color;
     private $weight;

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

     public function sayHello () {
          echo 'Превет! меня зовут ' . $this -> name . ' моя шерстка  ' . $this -> color . ' и  вешу я столько: ' . $this ->weight . '<br>';
     }
     public function  setName(string $name)
     {
          $this ->name = $name;
     }
     public function setColor(string $color)
     {
          $this->color = $color;
     }
     public function setWeight(float $weight)
     {
          $this->weight = $weight;
     }

     public function getName():string {
          return $this -> name;
     }
     public function getColor():string
     {
          return $this-> color;
     }
     public function getWeight():float
     {
          return $this-> weight;
     }

}
// создаем первый обьект
$cat1 = new Cat ('снежок', 'белый', '10');
$cat1->sayHello();
// создаем 2 обьект
$cat2 = new Cat('барсик', 'синий', '20');
$cat2->sayHello();

поправил

ivashkevich 04.10.2018 в 07:17

Потому что название конструктора начинается с двух подчеркиваний. Замечания:

  1. Слишком много очевидных комментариев.
  2. Коммент "передаем в обьект нужные нам параметры" не имеет никакого отношения к коду, над которым он написан
  3. Коммент "пердаем в параметр обьектов строку с свойствами" вообще бессмысленный - у объектов есть свойства, в которые можно что-то присвоить. У них нет никаких параметров.
  4. Коммент "получаем напрямую свойства приватного обьекта" - не бывает никаких приватных объектов! Где вы взяли эти формулировки?
  5. Конструкции вида $x->y не должны иметь никаких пробелов!
EWA 22.10.2018 в 22:24

Конструктор котиков)

<html>
<head>
<title>Конструктор котиков</title>
<body>
<h2>Соберите котика</h2>
<form action="index.php" method="post">

<label>Кот 1 </label><select name="cat1">
<option value="Tuzik">Tuzik</option>
<option value="Barsik">Barsik</option>
<option value="Snejok">Snejok</option>
</select>
<select name="color1">
<option value="Белый">Белый</option>
<option value="Черный">Черный</option>
<option value="Желтый">Желтый</option>
</select>

<br><br>

<label>Кот 2 </label><select name="cat2">
<option value="Tuzik">Tuzik</option>
<option value="Barsik">Barsik</option>
<option value="Snejok">Snejok</option>
</select>
<select name="color2">
<option value="Белый">Белый</option>
<option value="Черный">Черный</option>
<option value="Желтый">Желтый</option>
</select>
<input type="submit" value="С О Б Р А Т Ь">
</form>
</body>
</head>
</html>
<?php
class Cat
{
private $name;
private $color;
public function __construct(string $name, string $color)
{
    $this->name = $name;
    $this->color = $color;
}
 public function sayHello()
    {
        echo 'Привет! Меня зовут ' . $this->name . ' и мой цвет ' . $this->color . '.';
    }
public function getName()
    {
        return $this->name;
    }
    public function getColor()
    {
        return $this->color;
    }

}
if($_POST){
$cat1 = new Cat($_POST['cat1'], $_POST['color1']);
$cat1-> sayHello();
echo '<br>';
$cat2 = new cat($_POST['cat2'], $_POST['color2']);
$cat2-> sayHello();
}
?>
ivashkevich 23.10.2018 в 08:45

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

EWA 23.10.2018 в 10:00

Спасибки. Подправил.

ivashkevich 23.10.2018 в 23:19

Отлично

zebra 04.11.2018 в 00:29

Домашка:

<?php 
class Cat {
    private $name;
    private $color;

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

    public function sayHello() {
        echo 'Привет! Меня зовут ' . $this->name . ' ' . 'и мой цвет ' . $this->color;
    }

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

    public function setColor(string $color) {
        $this->color = $color;
    }

    public function getName(): string { //явное указание типа возвращаемого значения
        return $this->name;
    }

    public function getColor(): string {
        return $this->color;
    }
}
$cat1 = new Cat('Снежок', 'белый');
$cat2 = new Cat('Барсик', 'рыжий');

$cat1->sayHello();
echo '<br>';
$cat2->sayHello();
// echo $cat1->getName();

?>
ivashkevich 04.11.2018 в 00:34

Отличная домашка!
P.S. В PHP принято открывающую скобку тела функции переносить на следующую строку.

function func(): void
{ // вот сюда
Todd 04.11.2018 в 17:51
<?php
class Cat {
    private $name;
    private $color;

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

    public function sayHello() {
        echo 'Привет! Меня зовут ' . $this->name . '. Мой цвет ' . $this->color . ' !';
    }

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

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

    public function setColor(string $color) {
        $this->color = $color;
    }

    public function getColor(): string {
        return $this->color;
    }
}

$cat1 = new Cat('Снежок', 'белый');
$cat2 = new Cat('Барсик', 'рыжий');

echo $cat1->sayHello();
echo $cat2->sayHello();
?>
ivashkevich 04.11.2018 в 18:25

Хорошо. Для функций, которые ничего не возвращают стоит указывать return-type void. Открывающая скобка тела функции переносится на следующую строку (смотрите комментарий выше).

argon2i 25.11.2018 в 22:08

Для функций, которые ничего не возвращают стоит указывать return-type void.
Это для каких конкретно?

ivashkevich 26.11.2018 в 09:58

У которых после return ничего нет, либо у которых вообще отсутствует return =)

Moskva 05.11.2018 в 18:14

Очень похоже на ООП из С++, помню в университете проходили целый семестр классы, были некоторые вопросы не понятны, сейчас вроде стало намного понятнее с геттерами и сеттерами.

<?php   
    class Cat // создание класса кот
    {
        private $name; 
        private $color;
        public $weight;
        //конструктур принято объявлять в начале класса
        public function __construct(string $name, string $color)
        {
            $this->name = $name;
            $this->color = $color;
        }
        public function sayHi()
        {
            echo 'Привет! Меня зовут ' . $this->name . ', ' .'моя шерсть цвета: '.  $this->color . '.' . '<br>';
        }
        public function setName(string $name)
        {
            $this->name = $name;
        }
        public function getName(): string
        {
            return $this->name;
        }
        public function setColor(string $color)
        {
            $this->color = $color;
        }
        public function getColor(): string
        {
            return $this->color;
        }

    }
    $cat1 = new Cat('Снежок', 'белый');
    $cat1->setName('Снежок'); //можем изменить значение
    $cat1->setColor('Черный'); //можем изменить значение
    $cat1->sayHi();

    $cat2 = new Cat('Барсик', 'Рыжий');
    $cat2->setName('Котяра'); //можем изменить значение
    $cat2->setColor('Белый'); //можем изменить значение
    $cat2->sayHi();

 ?>
ivashkevich 05.11.2018 в 21:54

Хорошо, но public $weight; - лишнее.

demyanovpaul@yandex.ru 05.11.2018 в 20:52

Дополните метод sayHello(), чтобы котики после того, как назвали своё имя, говорили о том, какого они цвета.
Сделайте свойство color приватным и добавьте в конструктор ещё один аргумент, через который при создании котика будет задаваться его цвет.
Сделайте геттер, который будет позволять получить свойство color.
Подумайте, стоит ли давать возможность менять котикам цвета после их создания? Если вам хватило совести сказать да - добавьте ещё и сеттер для этого свойства. Это вам в наказание - хорошие люди котов не перекрашивают.
Создайте теперь белого Снежка и рыжего Барсика и попросите их рассказать о себе.

<?php
class Cat
{
    private $name;
    private $color;
    private $weight;

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

    public function sayHello()
    {
        echo 'Привет! Меня зовут, ' . $this->name . '.<br>';
        echo 'У меня цвет ' . $this->color . '.<br>';
        echo 'Я вешу ' . $this->weight . '.<br>';
    }

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

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

    public function setColor(string $color)
    {
        $this->color = $color;
    }

    public function getColor(): string
    {
        return $this->color;
    }

    public function setWeight(float $weight)
    {
        $this->weight = $weight;
    }

    public function getWeight(): float
    {
        return $this->weight;
    }
}

$cat = new Cat('Снежок', 'white', 3.5);
$cat->sayHello();

$cat2 = new Cat('Барсик', 'red', 6.2);
$cat2->sayHello();
ivashkevich 05.11.2018 в 21:54

Отлично!

bildep 18.11.2018 в 14:29
<?php

class Cat
{
    private $name;
    private $color;
    public $weight;

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

    public function sayHello()
    {
        echo 'Привет! Меня зовут ' . $this->name . '.';
        echo ' Мой цвет ' . $this->color . '.';
    }

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

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

    public function getColor(): string
    {
        return $this->color;
    }
}

$cat1 = new Cat('Снежок', 'белый');
$cat1->sayHello();

$cat2 = new Cat('Барсик', 'рыжий');
$cat2->sayHello();
ivashkevich 19.11.2018 в 21:33

Хорошо.

ilyaOrlov 24.11.2018 в 17:55
<?php
class Cat {
    private $name;
    private $color;
    public $weight;
    public function __construct(string $name, string $color) {
        $this -> name = $name;
        $this -> color = $color;
    }
    public function sayHello() {
        if ((substr($this -> color, -4, 2)) == 'ы') {
            $i = 'ого';
        } elseif ((substr($this -> color, -4, 2)) == 'и') {
            $i = 'его';
        }
        echo 'Привет! Меня зовут ' . $this -> name . '! И я ' . substr($this -> color, 0, -4) . $i . ' цвета.';
    }
    public function setName(string $name) {
        $this -> name = $name;
    }
    public function getName(): string {
        return $this -> name;
    }
    public function setColor(string $color) {
        $this -> color = $color;
    }
    public function getColor(): string {
        return $this -> color;
    }
}
$cat1 = new Cat('Снежок', 'белый');
$cat2 = new Cat('Барсик', 'рыжий');
$cat1 -> sayHello(); // Привет! Меня зовут Снежок! И я белого цвета.
echo '<br>';
$cat2 -> sayHello(); // Привет! Меня зовут Барсик! И я рыжего цвета.
?>
ivashkevich 24.11.2018 в 21:56

Отлично! Прочитайте еще про mb_substr и про utf-8 в PHP тогда сразу)

Waldemar 29.11.2018 в 09:23

Что-то не пойму, как сюда вставить скан кода))
Пока вставлю текстом:

<?php

class Cat
{
    private $name;
    private $color;

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

    public function sayHello()
    {
        echo 'Привет! Меня зовут ' . $this->name . ' и мой цвет '. $this->color . '.<br>';
    }

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

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

    public function getColor(): string
    {
        return $this->color;
    }

}

$cat1 = new Cat('Снежок', 'белый');
$cat2 = new Cat('Барсик', 'рыжий');

$cat1->sayHello();
$cat2->sayHello();
ivashkevich 29.11.2018 в 10:15

Всё отлично. Для методов, которые ничего не возвращают лучше указывать тип :void. Для форматирования кода используйте самую первую кнопку в редакторе комментария.

Waldemar 29.11.2018 в 10:25

Про void немного непонятно. В моём примере у каких методов надо его добавить?

ivashkevich 29.11.2018 в 10:31

setName или sayHello - методы, у которых после return ничего не указано, или вообще отсутствует return.

Pavel-Tonk 11.12.2018 в 00:48
<?php 
class Cat {
    private $name;
    private $color;
    private $age;
    public function __construct(string $name, string $color, string $age = '11.12.18') 
    {
        $this->name = $name;
        $this->color = $color;
        $this->age = $age;
    }
    public function setName(string $name):void 
    {
        $this->name = $name;
    }
    public function setColor(string $name):void 
    {
        $this->color = $color;
    }
    public function getName():string 
    {
        return $this->name;
    }
    public function getColor():string 
    {
        return $this->color;
    }
    public function getAge():string 
    {
        return $this->age;
    }
    public function sayHello():void
    {
        echo '<p>Мяу! Меня зовут - '.$this->name.'. Мой окрас - '.$this->color.'. Я родился - '.$this->age.'</p>';
    }
}
$cat1 = new Cat('Барсик','рыжий',date("d.m.Y"));
$cat1->sayHello();
$cat2 = new Cat('Cнежок','белый', date("d.M.y", mktime(0, 0, 0, 12, 10, 2018)));
$cat2->sayHello();

Решил вместо массы использовать дату рождения. У меня пара вопросов возникла после прочтения замечаний выше:

  1. Правильно ли я использовал :void?
  2. Нужен ли :void для конструктора?
  3. У меня не получилось записать дефолтное значение аргументу конструктора $age = date("d.m.Y"). Это потому что я не так делаю или так априори синтаксис не позволяет?
ivashkevich 11.12.2018 в 23:02

Привет, все отлично.

  1. Да
  2. Для конструктора не нужно
  3. Синтаксис позволяет. Видимо, что-то не так делал.
CarfikDK 13.12.2018 в 23:20
<?php

class Cat
{
    private $name;
    private $color;
    public $weight;
    public function __construct (string $name, string $color)
    {
        $this->name = $name;
        $this->color = $color;
    }
    public function sayHello()
    {
        echo 'Хелоу, меня зовут ' . $this->name . ', как видишь мой цвет  ' . $this->color . '.' . '<br>';
    }
    public function setName(string $name)
    {
        $this-> name = $name;
    }
    public function setColor(string $color)
    {
        $this-> color = $color;
    }
    public function  getName():string
    {
        return $this->name;
    }
    public function getColor():string
    {
        return $this->color;
    }
}
$cat1 = new Cat('Снежок', 'белый');
$cat1-> sayHello();
$cat1-> setName('Трактор'); //Потомучто громко мурчит =)
$cat1->setColor('Черный');

$cat2 = new Cat ('Барсик', 'рыжий');
$cat2->sayHello();
$cat1->sayHello();
ivashkevich 14.12.2018 в 10:37

Трактор так трактор) Отлично!

vadymbilyi@gmail.com 20.12.2018 в 13:30
<?php

class Cat
{
    public $name;
    public $color;

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

    public function sayHello()
    {
        echo 'Привет! Меня зовут ' . $this->name . '<br>';
        echo 'Я имею ' . $this->color . ' окрас' . '<br>';
    }

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

    public function setColor(string $color)
    {
        $this->color = $color;
    }

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

    public function getColor(): string
    {
        return $this->color;
    }

}

$cat1 = new Cat('Снежок', 'белый');
$cat2 = new Cat('Барсик', 'рыжий');

echo $cat1->sayHello();
echo $cat2->sayHello();
ivashkevich 20.12.2018 в 13:32

Отлично!

landialog 31.12.2018 в 19:44
class Cat
{
    private $name;
    private $color;
    private $weight;

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

    public function sayHello()
    {
        echo 'Меня зовут '. $this->name. ' мой цвет - '. $this->color. ' мой вес - '. $this->weight;
    }

    public function getColor()
    {
        return $this->color;
    }

}

$cat1 = new Cat('Снежок', 'Белый', 15);
echo '<p>' . $cat1->sayHello();
echo '<br>';
$cat2 = new Cat('Барсик', 'Черный', 12);
echo $cat2->sayHello();

P.S. Что-то где-то пропустил. По поводу указаний типов (string, void) данных. Это обязательно?
В каком уроке можно посмотреть примеры?

ivashkevich 01.01.2019 в 17:56

Привет. Обязательно. Урок про функции.

Bogdan 02.01.2019 в 15:59

Дополните метод sayHello(), чтобы котики после того, как назвали своё имя, говорили о том, какого они цвета.

    public function sayHello()
    {
        echo 'Привет! Меня зовут ' . $this->name . '.' . ' Мой цвет ' . $this->color . '.';
    }

Сделайте свойство color приватным и добавьте в конструктор ещё один аргумент, через который при создании котика будет задаваться его цвет.

private $name
private $color;

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

Сделайте геттер, который будет позволять получить свойство color.

public function getColor(): string
    {
        return $this->color;
    }

Подумайте, стоит ли давать возможность менять котикам цвета после их создания? Если вам хватило совести сказать да - добавьте ещё и сеттер для этого свойства. Это вам в наказание - хорошие люди котов не перекрашивают.

p.s коты стареют и выцветают :D

    private $color;

    public function setColor(string $color)
    {
        $this->color = $color;
    }

Создайте теперь белого Снежка и рыжего Барсика и попросите их рассказать о себе.

$catSnejok = new Cat('Снежок', 'белый');
$catBarsik = new Cat ('Барсик', 'рыжий');

$catSnejok->sayHello();
$catBarsik->sayHello();
ivashkevich 02.01.2019 в 21:45

Отлично! =)

axelstx 28.01.2019 в 19:50
<?php
class Cat
{
    private $name;
    private $color;

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

    public function sayHello()
    {
        echo 'Привет! Меня зовут ' . $this->name . ' и мой цвет ' . $this->color . '.';
    }

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

    public function setColor(string $color)
    {
        $this->color = $color;
    }

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

    public function getColor(): string
    {
        return $this->color;
    }

}

$cat1 = new Cat('Снежок', 'белый');
$cat1->sayHello();
echo PHP_EOL;
$cat2 = new Cat('Барсик', 'рыжий');
$cat2->sayHello();
?>
ivashkevich 29.01.2019 в 07:10

Отлично!

excent63 03.02.2019 в 16:42

Добрый день!
Домашнее задание:

<?php
class Cat
{
    private $name;
    private $color;
    public $weight;

    public function __construct(string $name, string $color)
    {
        $this->name = $name;
        $this->color = $color;
    }
    public function sayHello()
    {
        echo 'Привет! Меня зовут '. $this->name . ', ';
        echo 'я ' . $this->color . '.';
        echo '<br>';
    }
    public function setName(string $name, string $color)
    {
        $this->name = $name;
        $this->color = $color;
    }
    public function getName(): string
    {
        return $this->name;
    }
    public function getColor(): string
    {
        return $this->color;
    }
}

$cat1 = new Cat('Снежок','белый');
$cat1->weight = '3,5';
$cat1->sayHello();

$cat2 = new Cat('Барсик','черный');
$cat2->setName('Васька','рыжий');
$cat2->weight = '6,2';
$cat2->sayHello();
ivashkevich 04.02.2019 в 00:00

Почему weight - public. И почему это строка, а не число?

excent63 06.02.2019 в 20:57

Исправлено!)

<?php
class Cat
{
    private $name;
    private $color;
    private $weight;

    public function __construct(string $name, string $color, float $weight)
    {
        $this->name = $name;
        $this->color = $color;
        $this->weight = $weight;
    }
    public function sayHello()
    {
        echo 'Привет! Меня зовут '. $this->name . ', ';
        echo 'я ' . $this->color . ', ';
        echo 'мой вес ' . $this->weight . ' кг!';
        echo '<br>';
    }
    public function setName(string $name, string $color, float $weight)
    {
        $this->name = $name;
        $this->color = $color;
        $this->weight = $weight;
    }
    public function getName(): string
    {
        return $this->name;
    }
    public function getColor(): string
    {
        return $this->color;
    }
    public function getWeight(): string
    {
        return $this->weight;
    }
    public function setWeight(float $weight): void
    {
        $this->weight = $weight;
    }
}

$cat1 = new Cat('Снежок','белый',3.5);
$cat1->sayHello();

$cat2 = new Cat('Барсик','черный', 6.2);
$cat2->setName('Васька','рыжий', 7.1);
$cat2->sayHello();
ivashkevich 07.02.2019 в 13:50

getWeight() - почему без типа?

excent63 07.02.2019 в 14:11

Пропустил...)

cap 24.02.2019 в 19:10
<?php

class Cat
{
    private $name;
    private $color;

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

    public function sayHello()
    {
        echo 'Привет! Меня зовут ' . $this->name . ', ' . 'я ' . $this->color . '.';
    }

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

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

    public function setColor(string $color)
    {
        $this->color = $color;
    }

    public function getColor(): string
    {
        return $this->color;
    }

}

$cat1 = new Cat('Снежок', 'белый');
$cat1->sayHello();
echo '<br>';
$cat2 = new Cat('Барсик', 'черный');
$cat2->sayHello();
echo '<br>';
echo 'цвет первого кота: ' . $cat1->getColor() . '.'; //получает свойство color
echo '<br>';
$cat1 = new Cat('Снежок', 'все еще белый');
$cat1->sayHello();
echo '<br>';
$cat2 = new Cat('Барсик', 'рыжий');
$cat2->sayHello();
ivashkevich 25.02.2019 в 10:35

Отлично! Для сеттеров можно задать тип возвращаемого значения:

function setBlaBla(): void
Evgeny 08.03.2019 в 10:38
<?php

class Cat
{
    private $name;
    private $color;
    public $weight;

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

    public function sayHello()
    {
        echo 'Привет! Меня зовут ' . $this->name . ', мой цвет – ' . $this->color . '.<br>';
    }

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

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

    public function getColor(): string
    {
        return $this->color;
    }
}

$cat1 = new Cat('Снежок', 'белый');
$cat2 = new Cat('Барсик', 'рыжий');
$cat1->sayHello();
$cat2->sayHello();
ivashkevich 09.03.2019 в 19:30

Отлично! Для методов, которые ничего не возвращают, можно писать тип void:

function func(): void
{
...
babls2332@gmail.com 15.03.2019 в 17:49
<?php

class Cats
{
    private $name;
    private $color;

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

    public function sayHello()
    {
        echo 'Привет! Меня зовут ' . $this->name . '.';
        echo 'Мой цвет - ' . $this->color . '.';
    }

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

    public function setColor(string $color)
    {
        $this->color = $color;
    }

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

    public function getColor(): string
    {
        return $this->color;
    }

}

$barsik = new Cats('Барсик', 'рыжий');
$barsik->setName('Барсик');
$barsik->setColor('рыжий');
$barsik->sayHello();
$snejok = new Cats('Снежок', 'белый');
$snejok->setName('Снежок');
$snejok->setColor('белый');
$snejok->sayHello();
ivashkevich 17.03.2019 в 23:27

Имена классов начинаются с большой буквы. Что такое 2 в названии класса? Вообще ни о чем не говорит. Потом появятся lesson3 и lesson4? Название класса должно отражать его суть. Для чего свойство weight, если оно не используется? Почему оно public?

babls2332@gmail.com 17.03.2019 в 23:32

Подправил

ivashkevich 18.03.2019 в 00:03

Ок. Только назвать стоит Cat, так как этот класс является описанием одного экземпляра кота.

arhipow@mail.ru 19.03.2019 в 11:54
class Cat
{
    private $name;
    private $color;

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

    public function sayHello()
    {
        echo 'Привет! Меня зовут ' . $this->name . '. ' . 'Я ' . $this->color;
    }

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

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

$cat1 = new Cat('Снежок', 'белый');
$cat2 = new Cat('Барсик', 'рыжий');
echo $cat1->sayHello();
echo $cat2->sayHello();
ivashkevich 19.03.2019 в 23:24

Отлично! Для методов, которые ничего не возвращают, можно писать тип void:

function func(): void
{
...
arhipow@mail.ru 20.03.2019 в 07:49

Хочу уточнить, речь идёт о методах, у которых отсутствует return? Например: setName

ivashkevich 20.03.2019 в 10:03

Да. Причем не просто return, а именно return "тут что-то есть"
Просто return без аргументов тоже вернёт null.

arhipow@mail.ru 20.03.2019 в 10:14

Ок, понятно!

Grewi 26.03.2019 в 12:57
class Cat
{
    private $name;
    private $color;
    private $weight;

    public function __construct(string $name, string $color, float $weight)
    {
        $this->name = $name;
        $this->color = $color;
        $this->weight = $weight;
    }

    public function sayHello()
    {
        echo '<div> 
                Привет меня зовут - '.$this->name.', цвет моей шубки  '.$this->color.', a вес: '.$this->weight.'кг 
              </div>';
    }

    public function setName(string $name):void
    {
        $this->name = $name;
    }
    public function setColor(string $color):void
    {
        $this->color = $color;
    }
    public function setWeight(float $weight):void
    {
        $this->weight = $weight;
    }

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

$cat1 = new Cat('Снежок','белый',3.5); //Сделали кота
$cat1->setName ('Дружок'); //Переделали кота в собаку
$cat1->setColor('нормальный для собаки');
$cat1->setWeight(10);

$cat1->sayHello();

$cat2 = new Cat('Барсик', 'Рыжий','5'); //Сделали второго кота
$cat2->sayHello();

echo '<div style="margin: 10px; padding: 10px; border: 1px solid #999; color: #444;" >'
    . $cat1->getName().' '.$cat1->getColor()
    .'</div>';
ivashkevich 27.03.2019 в 11:37

Ок, но не надо сюда верстку вставлять. Об этом еще поговорим в следующих уроках.

Boodoo 09.04.2019 в 16:28
<?php
    class Cat
    {
        private $name;
        private $color;

        public function __construct(string $name, string $color)
        {
            $this->name = $name;
            $this->color = $color;
        }
        public function sayHello()
        {
            echo 'Привет! Меня зовут ' . $this->name . ', мой цвет ' . $this->color . '.';
        }
        public function setName(string $name)
        {
            $this->name = $name;
        }
        public function getName() : string
        {
            return $this->name;
        }
        public function setColor(string $color)
        {
            $this->color = $color;
        }
        public function getColor() : string
        {
            return $this->color;
        }
    }

    $cat = new Cat('Снежок', 'белый');
    $cat2 = new Cat('Барсик', 'рыжий');
    $cat->sayHello();
    $cat2->sayHello();
ivashkevich 09.04.2019 в 20:57

Отлично

polvanovv 17.04.2019 в 17:03
<?php
class Cat
{
    private $name;
    private $color;
    public $weight;

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

    public  function sayHello()
    {
        echo 'Привет! Меня зовут ' . $this->name . '.' . '<br>';
        echo 'Мой окрас - ' . $this->color . '.' . '<br>';
    }
    public function setName(string $name)
    {
      $this->name = $name;
    }
    public function getName(): string
{
    return $this->name;
}

    public function getColor(): string
    {
        return $this->color;
    }

    public function setColor(string $color)
    {
        $this->color = $color;
    }
}

$cat1 = new Cat('Снежок','Белый' );
echo $cat1->sayHello();

$cat2 = new Cat('Барсик', 'Рыжий');
echo $cat2->sayHello();

$cat2->setColor('Розовый');
$cat2->sayHello();
ivashkevich 17.04.2019 в 22:25

public $weight; - это для чего? Почему public?

polvanovv 18.04.2019 в 05:34

Этот код я не использовал, но он может пригодиться одному из потомков)
Как определить какое свойство сделать приватным а какое публичным?

ivashkevich 18.04.2019 в 07:31

Если вы не хотите, чтобы свойство было доступно извне - то точно не public. Если хотите, чтобы к нему можно было обращаться в объектах дочерних классов - protected. Во всех остальных случаях используйте по умолчанию private.

Dram 28.04.2019 в 13:06

Я смотрю до ООП дошли не все бойцы :))) комментов слало меньше ))
Итак домашка №1

    public function sayHello()
    {
        echo 'Привет! Меня зовут ' . $this->name . '.<br>' ;
        echo 'я ' . $this->color . ' цвета!<br>' ;
    }
Dram 28.04.2019 в 13:12

№2

<?php
class Cat
{
    public $name;
    private $color;
    public $weight;

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

    public function sayHello()
    {
        echo 'Привет! Меня зовут ' . $this->name . '.<br>' ;
        echo 'я ' . $this->color . ' цвета.<br>' ;
    }
}

$cat1 = new Cat('белого');
$cat1->name = 'Снежок';
$cat1->weight = 3.5;

$cat2 = new Cat('черного');
$cat2->name = 'Барсик';
$cat2->weight = 6.2;
ivashkevich 29.04.2019 в 11:40

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

Dram 28.04.2019 в 13:17

№3

    public function getColor(): string
    {
        return $this->color;
    }

+

echo $cat1->getColor();
ivashkevich 29.04.2019 в 11:40

Ок

Dram 28.04.2019 в 13:26

№4

    public function sayHello()
    {
        echo 'Привет! Меня зовут ' . $this->name . '.<br>' ;
    }
    public function getColor(): string
    {
        return $this->color;
    }
    public function setColor(string $color)
    {
        $this->color = $color;
    }
$cat1 = new Cat('белого');
$cat1->name = 'Снежок';
$cat1->weight = 3.5;
$cat1->setColor('за то, что насцал в ботинки перекрашен в ЗЕЛЕНЫЙ!');

$cat1->sayHello();
echo $cat1->getColor(). "<br>";

Вопрос - почему ошибка с echo $cat1->setColor(). "<br>"; ??
Правильно ли я понимаю что если имеется сеттер для этого же свойства, то он всегда перезаписывает геттер?

ivashkevich 29.04.2019 в 11:42

Не понял вашего вопроса. Звучит, как будто не до конца разобрались в том, что происходит

Dram 28.04.2019 в 14:02

№5

<?php
class Cat
{
    public $name;
    private $color;
    public $weight;

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

    public function sayHello()
    {
        echo "Привет! Меня зовут " . $this->name . ", я вешу " . $this->weight. " кг. Моя шерсть ". $this->color. " цвета!<br>" ;

    }
    public function getColor(): string
    {
        return $this->color;
    }
    public function setColor(string $color)
    {
        $this->color = $color;
    }
}
$cat1 = new Cat('белого');
$cat1->name = 'Снежок';
$cat1->weight = 3.5;
$cat1->setColor('за то, что насцал в ботинки, ЗЕЛЕНОГО');

$cat2 = new Cat('рыжего');
$cat2->name = 'Барсик';
$cat2->weight = 6.2;

$cat2->sayHello();
$cat1->sayHello();
ivashkevich 10.05.2019 в 13:26

Отлично. Для сеттеров можно прописать тип возвращаемого значения :void

artemship 06.05.2019 в 16:19
<?php

class Cat
{
    private $name;
    private $color;

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

    public function sayHello(): void
    {
        echo 'Привет! Меня зовут ' . $this->name . '. Я – ' . $this->color . ' котик!<br>';
    }

    public function setName(string $name): void
    {
        $this->name = $name;
    }

    public function setColor(string $color): void //Этот сеттер для нехороших людей :)
    {
        $this->color = $color;
    }

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

    public function getColor(): string
    {
        return $this->color;
    }
}

$catSnegok = new Cat('Снежок', 'белый');
$catBarsik = new Cat('Барсик', 'рыжий');
$catSnegok->sayHello(); //Привет! Меня зовут Снежок. Я – белый котик!
$catBarsik->sayHello(); //Привет! Меня зовут Барсик. Я – рыжий котик!
ivashkevich 10.05.2019 в 13:27

Супер!

XXX 05.06.2019 в 23:34
<?php

class Cat
{
private $name;
private $color;
public $weight;

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

    public function sayHello()
    {
        echo 'Hi! My name is ' . $this->name . ', I am ' . $this->color .'.'. '<br>';
    }

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

    public function setColor(string $color)
    {
        $this->color = $color;
    }

    public function getColor(): string
    {
        return $this->color;
    }

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

}

$barsik = new Cat('Barsik', 'red');
$barsik->sayHello();

$marsik = new Cat('Marsik', 'blue');
$marsik->setColor('grey');
$marsik->sayHello();

Наконец-то вернулся к курсу!

ivashkevich 06.06.2019 в 09:33

Откуда public $weight;? Почему он public?

XXX 11.06.2019 в 11:57

Тестировал различный код и нужен был третье свойство. Когда кидал домашку не удалил.)

ivashkevich 11.06.2019 в 13:22

Это полиция неиспользуемого кода. У вас неиспользуемое свойство. На первый раз отпускаем. Но будьте повнимательнее.

Tina 09.06.2019 в 12:37
Домашка 1 урок:

class Cat
{
    private $name;
    private $color;

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

    public function sayHello()
    {
        echo '<br>Привет! Меня зовут ' . $this->name . ' и я цвета ' . $this->color;
    }

//    Сеттеры
    public function setName(string $name)
    {
        $this->name = $name;
    }

    public function setColor(string $color): void
    {
        $this->color = $color;
    }

//    Геттеры
    public function getName(): string
    {
        return $this->name;
    }

    public function getColor(): string
    {
        return $this->color;
    }
}

$cat1 = new Cat('Снежок', 'Блонд');
$cat1->sayHello();

$cat2 = new Cat('Барсик', 'Рыжий конопатый');
$cat2->sayHello();
$cat2->setColor(' (Золотой)');
echo $cat2->getColor();
ivashkevich 09.06.2019 в 16:04

Отлично

ashfedor 09.06.2019 в 13:12

Доброго времени суток. Наконец-то добрался до ООП
домашка


class Cat
{
    private $name;
    private $color;

    public function __construct(string $name, string $color)// задаем в конструкторе обязательные свойства имя и цвет
    {
        $this->name=$name;
        $this ->color = $color;
    }

    public function sayHello()
    {
        echo 'Привет меня зовут' . ' ' . $this->name . ' '. 'цвет моей шерсти' . ' ' . $this->color . '.';
    }
    public function setName(string $name)
    {
        $this->name = $name;
    }
    public function getName(): string
    {
        return $this->name;
    }
    public function setColor(string $color)
    {
        $this->color = $color;
    }
    public function getColor(): string
    {
        return $this->color;
    }

}

$cat1 = new Cat('Снежок', 'белый');
$cat1->sayHello();

echo '<br>';
$cat1->setColor('черный');
echo 'Перекрашиваем ' . $cat1->getName() . ' ' . 'в' . ' ' . $cat1->getColor() . '<br>';
$cat1->sayHello();
echo '<br>';
$cat2 = new Cat('Барсик', 'рыжий');
$cat2->sayHello();``
ivashkevich 09.06.2019 в 16:04

И вам доброго. Отлично!

Bocha 13.06.2019 в 13:41

1.

class Cat
{
    private $name;
    public $color;

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

    public function sayHello()
    {
        echo 'Привет! Меня зовут ' . $this->name . ', мой цвет ' . $this->color;
    }

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

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

}

$cat1 = new Cat('Снежок');
$cat1->color = 'белый';

echo $cat1->sayHello();

2.

class Cat
{
    private $name;
    private $color;

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

    public function sayHello()
    {
        echo 'Привет! Меня зовут ' . $this->name . ', мой цвет ' . $this->color;
    }

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

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

    public function setColor(string $color)
    {
        $this->color = $color;
    }

    public function getColor() : string
    {
        return $this->color;
    }

}

$cat1 = new Cat('Снежок', 'Белый');

echo $cat1->sayHello();

3.

public function getColor() : string
    {
        return $this->color;
    }

4.
НЕТ!

5.

class Cat
{
    private $name;
    private $color;
    private $weight;

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

    public function sayHello()
    {
        echo 'Привет! Меня зовут ' . $this->name . ' мой цвет ' . $this->color . ' я вешу' . $this->weight . ' кг';
    }

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

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

    public function setColor(string $color)
    {
        $this->color = $color;
    }

    public function getColor() : string
    {
        return $this->color;
    }

    public function setWeight(string $weight)
    {
        $this->weight = $weight;
    }

    public function getWeight() : string
    {
        return $this->weight;
    }
}

$cat1 = new Cat('Снежок', 'Белый', ' 3.6');
$cat2 = new Cat('Барсик', 'Рыжий', ' 3.0');
$cat1->sayHello();
echo '<br>';
$cat2->sayHello();
ivashkevich 13.06.2019 в 19:51

Но сеттер для цвета всё же добавили)

esqrx 18.06.2019 в 20:05

// 1

    public function sayHello()
    {
        echo 'Привет! Меня зовут ' . $this->name . '.' . ' , мой цвет - ' . $this->color;
    }
ivashkevich 19.06.2019 в 18:19

Отлично!

rpash151 22.06.2019 в 13:38
<?php

class Cat
{
    private $name;
    private $color;
    public $weight;

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

    public function sayHello()
    {
        echo 'Привет! Меня зовут ' . $this->name . ', '.'я имею '.$this->color.' окрас';
        echo '<br>';
    }

    public function setName(string $name)
    {
        $this->name = $name;
    }
    public function getName(): string
    {
        return $this->name;
    }
    public function setColor(string $color)
    {
        $this->color = $color;
    }
    public function getColor(): string
    {
        return $this->color;
    }
}

$cat1 = new Cat('Снежок','Белый');
//$cat1->setName('Снежок');
//$cat1->setColor('Оранжевый');
$cat1->weight = 3.5;
$cat1->sayHello();
$cat1->getName();

$cat2 = new Cat('Барсик','Рыжий');
//$cat2->setName('Пушок');
//$cat2->setColor('Коричневый');
$cat2->weight = 2.5;
$cat2->sayHello();
ivashkevich 23.06.2019 в 17:47

Что это у вас weight наружу торчит? Почему public?

Moskva 29.06.2019 в 14:52
<?php

class Cat
{
    private $name;
    private $color;
    public $weight;

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

    public function sayHello()
    {
        echo 'Привет, меня зовут ' . $this-> name . '. ' . 'Цвет моей шерсти ' . $this->color . '.';
    }

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

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

    public function setColor(string $color)
    {
        $this->color = $color;
    }

    public function getColor():string {
        return $this->color;
    }

}

$cat1 = new Cat('Снежок', 'белый');

$cat1->weight = 2.3;
$cat1->sayHello();
$cat1->setColor('чёрный');// перекрашиваем 1-го котика

$cat2 = new Cat('Барсик' , 'рыжий');
$cat2->weight = 2.9;
$cat2->setColor('серый');// перекрашиваем 2-го котика
$cat2->sayHello();
ivashkevich 30.06.2019 в 15:03

Почему weight у вас public? И почему его нет в конструкторе. Можно создать кота без веса. Это неправильно.

Moskva 03.07.2019 в 13:40

В задании ничего не было связано с weight, к концу урока он тоже не изменился и был public, поэтому не трогал его. Ну, ладно, поправки сделал как у ребят, которые сделали задание правильно.

class Cat
{
    private $name;
    private $color;
    private $weight;

    public function __construct(string $name , string $color, float $weight)
    {
        $this->name = $name;
        $this->color = $color;
        $this->weight = $weight;
    }

    public function sayHello()
    {
        echo 'Привет, меня зовут ' . $this-> name . '. ' . 'Цвет моей шерсти ' . $this->color . '.';
    }

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

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

    public function setColor(string $color)
    {
        $this->color = $color;
    }

    public function getColor():string {
        return $this->color;
    }

    public function setWeight(){
        $this->weight = $weight;
    }

    public function getWeight(): float{
        return $this->weight;
    }
}

$cat1 = new Cat('Снежок', 'белый', 3.9);
$cat1->sayHello();
$cat1->setColor('чёрный');// перекрашиваем 1-го котика

$cat2 = new Cat('Барсик' , 'рыжий', 2.9);
$cat2->setColor('серый');// перекрашиваем 2-го котика
$cat2->sayHello();
ivashkevich 03.07.2019 в 19:24

Отлично

vaynshteyne@yandex.ru 02.07.2019 в 14:29
<?php

class Cat
{
    private $name;
    private $color;
    private $weight;

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

    public function sayHello()
    {
        echo 'Привет! Меня зовут ' . $this->name . '.' . '  И я ' . $this->color . '. ' . 'Я вешу ' . $this->weight . ' кг.' . '<br>';
    }

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

    public function  setColor(string $color)
    {
        $this->color = $color;
    }

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

$cat1 = new Cat('Снежок', 'белый', '5.4');
$cat1->sayHello();

$cat2 = new Cat ('Барсик', 'рыжий', '7');
$cat2->sayHello();

$cat1->setName('Саня');
$cat1->setColor('бритый');
$cat1->sayHello();
ivashkevich 02.07.2019 в 16:32
$cat1-> sayHello();

Тут не нужны пробелы

Bizzzon 14.07.2019 в 21:41
<?php
class Cat
{
private $name;
private $color;
public function __construct(string $name, $color)
{
$this->name = $name;
$this->color = $color;
}

public function sayHello()
{
echo 'Привет! Меня зовут ' . $this->name . '.';
echo "</br>";
echo 'Мой цвет - ' . $this->color . '.';
}

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

public function getName(): string
{
return $this->name;
}
public function getColor() : string
{
return $this->color;
}
}
$cat1 = new Cat('Снежок', 'белый');
echo $cat1->sayHello();
echo "</br>";
$cat2 = new Cat('Барсик', 'рыжий');
echo $cat2->sayHello();
ivashkevich 15.07.2019 в 04:50

Супер! Только с отступами проблема. Используй Ctrl+Alt+L в phpstorm.

webdev 18.07.2019 в 14:44

ДЗ

<?php
class Cat
{
    private $name;
    private $color;
    public $weight;

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

    public function sayHello()
    {
        echo 'Привет! Меня зовут ' . $this->name . '. Мой цвет '.$this->color.'.';
    }

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

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

    public function getColor(): string
    {
        return $this->color;
    }

}
$cat1 = new Cat('Снежок', 'белый');
$cat1->sayHello();
$cat2 = new Cat('Барсик', 'рыжий');
$cat2->sayHello();

Красить кота не рискну)

ivashkevich 18.07.2019 в 19:26

public $weight; - это что? Почему public?

webdev 19.07.2019 в 10:06

В задании же нет прямого указания сделать все свойства приватными.
С другой стороны логичнее сделать приватным все таки это свойство.
Сделал приватным)
Вот сеттер и геттер

public function setWeight(string $weight)
    {
        $this->weight = $weight;
    }

    public function getWeight(): string
    {
        return $this->weight;
    }
ivashkevich 20.07.2019 в 14:47

Ничто не должно быть public, если это не используется вне объектов класса.

webdev 19.07.2019 в 10:10

Кстати, в левой колонке сайта мне пишет предложение о покупке курсов за 1$.
Там кривовато час отображается
До окончания акции:
013:51:06

ivashkevich 20.07.2019 в 14:47

Спасибо

Metey 19.07.2019 в 08:08
<?php
class Cat
{
    private $name;
    private $color;
    private $weight;

    public function __construct(string $name, string $color, float $weight)
    {
        $this->name = $name;
        $this->color = $color;
        $this->weight = $weight;
    }

    public function sayHello()
    {
        echo 'Привет! Меня зовут ' . $this->name . ', мой цвет '. $this->color.' и мой вес ' . $this->weight .' кг' ;
    }

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

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

    public function setColor(string $color)
    {
        $this->color = $color;
    }

    public function getColor(): string
    {
        return $this->color;
    }

    public function setWeight(string $weight)
    {
        $this->weight = $weight;
    }

    public function getWeight(): string
    {
        return $this->weight;
    }
}

$cat1 = new Cat('Снежок', 'белый', 3.5 );
$cat2 = new Cat('Барсик', 'рыжий', 4 );
$speack = 'sayHello';
echo $cat1->$speack() .'<br/>';
echo $cat2->$speack() .'<br/>';
ivashkevich 19.07.2019 в 09:37

Ок. Но не надо заводить переменную с именем метода. Вызывайте сразу по имени напрямую.

Reechniy 19.07.2019 в 16:32
<?php

class Cat
{
    private $name;
    private $color;

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

    public function sayHello()
    {
        echo 'Привет, меня зовут '. $this->name . '. Я ' . $this->color . ".";
    }

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

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

    public function setColor (string $color)
    {
        $this->color = $color;
    }

    public function getColor(): string
    {
        return $this->color;
    }
}

$cat1 = new Cat('Снежок', 'Черный');
$cat2 = new Cat ('Барсик', 'Рыжий');

echo $cat1->sayHello();
echo '<br>';
echo $cat2->sayHello();
ivashkevich 20.07.2019 в 14:39

Супер!

Blook 29.07.2019 в 23:04
class Cat
{
    private $name;
    private $color;
    private $weight;

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

    public function sayHello(): string
    {
        echo 'Привет, меня зовут ' . $this->name . '. Мой цвет ' . $this->color;
    }

    public function setName(string $name): void
    {
        $this->name = $name;
    }

    public function setColor(string $color): void
    {
        $this->color = $color;
    }

    public function getName(): string
    {
        return 'Мое имя ' . $this->name;
    }

    public function getColor(): string
    {
        return 'Мой цвет ' . $this->color;
    }

}

$cat1 = new Cat('Снежок', 'белый');
$cat2 = new Cat('Барсик', 'рыжий');

echo $cat1->getName() . '. ' . $cat1->getColor() . '.';
echo '<br>';
echo $cat2->getName() . '. ' . $cat2->getColor() . '.';
ivashkevich 30.07.2019 в 09:06

public $weight; - это что такое?

Методы, которые ничего не возвращают, можно описать как возвращающие :void

Blook 31.07.2019 в 08:45

Спасибо, исправил

gruimed 03.08.2019 в 21:21
<?php

class Cat {

    private $name;
    private $color;

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

    public function sayHello()
    {
        echo " Mew! \n My name is {$this->name}. \n My fur is {$this->color}. \n";
    }

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

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

    public function setColor(string $color)
    {
        $this->color = $color;
    }
    public function getColor(): string
    {
        return $this->color;
    }
}

$cat1 = new Cat('Argo', 'orange');
$cat1->sayHello();

$cat2 = new Cat('Begemot', 'black');
$cat2->sayHello();
ivashkevich 04.08.2019 в 04:40

Супер!

Pro100Bah 02.09.2019 в 10:49

class Cat
{
    private $name;
    private $color;

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

    public function sayHello()
    {
        echo 'Меня зовут ' . $this->name . ', цвет шерсти у меня ' . $this->color;
    }

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

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

    public function setColor(string $color)
    {
        $this->color = $color;
    }

    public function getColor(): string
    {
        return $this->color;
    }
}

$cat1 = new Cat('Тима', 'Белый');
$cat2 = new Cat('Барсик', 'Рыжий');
$cat1->sayHello();
echo '<br>';
$cat1->setName('Снежок');
$cat1->setColor('зеленый, не бывает таких котиков хозяин');
$cat1->sayHello();
echo '<br>';
$cat2->sayHello();
ivashkevich 02.09.2019 в 18:37

Отлично

Dreft 04.09.2019 в 20:20
<?php

class Cat
{
    private $name;
    private $color;
    public $weight;

    public function __construct(string $name, string $color, float $weight)
    {
        $this->name = $name;
        $this->color = $color;
        $this->weight = $weight;
    }

    public function sayHello()
    {
        echo 'Привет, меня зовут ' . $this->name . ' Мой цвет -  ' . $this->color . ' Мой вес - ' . $this->weight . "<br>";

    }

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

    public function setColor(string $color)
    {
        $this->color = $color;
    }

    public function setWeight(string $weight)
    {
        $this->weight = $weight;
    }

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

    public function getColor(): string
    {
        return $this->color;
    }

    public function geWeight(): string
    {
        return $this->weight;
    }
}

$cat1 = new Cat('Снежок', 'Белый', 23.5);
$cat1->setName('Снежинка');
$cat1->setColor('Черный');
$cat1->sayHello();
echo "<br>";
$cat2 = new Cat('Барсик', 'Рыжий', 100);
$cat2->setName('Тигр');
$cat2->setColor('Красный');
$cat2->sayHello();
ivashkevich 04.09.2019 в 21:26

public $weight; - почему public?

Dreft 04.09.2019 в 21:29

я так и не понял, когда и какой модификатор ставить

ivashkevich 05.09.2019 в 05:41

Почитай в официальной документации, может там понятнее

prinzplanloser0514@gmail.com 29.09.2019 в 16:44
<?php

class Cat
{
    private $name;
    private $color;
    public $weight;

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

    public function sayHello()
    {
        echo 'Привет! Меня зовут ' . $this->name . ','.'я '.' '.$this->color.'.';
    }

    public function setName(string $name)
    {
        $this->name = $name;
    }
    public function getName(): string
    {
        return $this->name;
    }
public function getColour(): string {
        return $this->color;
}
public function setColour(string $colour){
        $this->color=$colour;
}
}

$cat=new Cat('Снежок','белый');
$cat1=new Cat('Барсик','рыжий');
echo $cat1->sayHello().'<br>';
echo $cat->sayHello();
ivashkevich 30.09.2019 в 00:35

public $weight; - это что? Почему public?

getColour(): string {
        return $this->color;

Почему свойство color а метод getColour?

Скобка, открывающая тело метода, переносится на следующую строку.

prinzplanloser0514@gmail.com 30.09.2019 в 08:56

Понял, public $weight с задачек по курсу,нужно было не паблик,а протектед, имя метода невнимательно писал,всё понял,принял,исправлюсь.

ivashkevich 01.10.2019 в 12:30

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

dliashchenko 06.10.2019 в 22:28
<?php
class Cat
{
    private $name;
    private $color;
    public function __construct(string $name, string $color)
    {
        $this->name = $name;
        $this->color = $color;
    }

    public function sayHello()
    {
        echo 'Привет! Меня зовут ' . $this->name . '. <br/>';
    }
    public function sayColor()
    {
        echo 'Мой цвет ' . $this->color . '. <br/>';
    }

    public function setName(string $name)
    {
        $this->name = $name;
    }
    public function setColor(string $color)
    {
        $this->color = $color;
    }
    public function getName(): string
    {
        return $this->name;
    }
    public function getColor(): string
    {
        return $this->color;
    }

}

$cat1 = new Cat('Снежок', 'Белый');
$cat1->sayHello();
$cat1->sayColor();

$cat2 = new Cat('Барсик', 'Рыжий');
$cat2->sayHello();
$cat2->sayColor();

Сперва не понял про что. Теперь понял и исправил.

ivashkevich 07.10.2019 в 09:58

Окей. А почему через конструктор не задаешь?

H3licoptero 22.10.2019 в 12:48
class Cat
{
    private $name;
    private $color;

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

    public function sayHello()
    {
        echo 'Мяу! Меня зовут ' . $this->name . '.' . ' И я - ' . $this->color . ' котик.';
    }

    public function setColor(string $color)
    {
        $this->color = $color;
    }

    public function getColor(): string
    {
        return $this->color;
    }

}

$cat1 = new Cat('Снежок', 'белый');
$cat2 = new Cat('Брасик', 'рыжий');

$cat1->setColor('зелёный');

$cat1->sayHello();
echo '<br>';
$cat2->sayHello();
echo '<br>';

echo $cat1->getColor();
echo '<br>';
echo $cat2->getColor();
ivashkevich 22.10.2019 в 13:36

Отлично

TheTigra 04.11.2019 в 16:33

Домашка:

<?
class Cat {
    private $name;
    private $color;
    public $weight;
    public function __construct(string $name, string $color)
    {
        $this->name = $name;
        $this->color = $color;
    }
    public function sayHello()
    {
        echo 'Привет! Меня зовут ' . $this->name . '. Мой цвет - '.$this->color;
    }
    public function setName(string $name)
    {
        $this->name = $name;
    }
    public function getName(): string
    {
        return $this->name;
    }
    public function setColor(string $color)
    {
        $this->color=$color;
    }
    public function getColor(): string
    {
        return $this->color;
    }
}
$cat1 = new Cat('Снежок', 'Белый');
$cat1->sayHello();

$cat2 = new Cat('Барсик', 'Полосатый');
$cat2->sayHello();
?>
ivashkevich 04.11.2019 в 19:43

public $weight; - это что?

AleksandrNenashev 13.12.2019 в 01:48

Здравствуйте, никто не указал ошибку или у всех срабатывает public function getName(): string ?

ivashkevich 14.12.2019 в 15:25

Выберите в OpenServer версию PHP >=7.1

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